Я знаю, что есть несколько подобных вопросов, но мой вопрос совсем другой и трудный для меня. У меня есть два словаря:Сравнение словарей и вложенных словарей Python
d1 = {'a': {'b': {'cs': 10}, 'd': {'cs': 20}}}
d2 = {'a': {'b': {'cs': 30}, 'd': {'cs': 20}}, 'newa': {'q': {'cs': 50}}}
т.е. d1
имеет ключ 'a'
и d2
имеет ключи 'a'
и 'newa'
(другими словами d1
мой старый ДИКТ и d2
мой новый ДИКТ).
Я хочу перебирать эти словари таким образом, чтобы ключ был одинаковым для его значения (вложенный dict), например. когда я найду ключ 'a'
в d2
, я проверю, есть ли 'b'
, если да, то значение 'cs'
(изменено с 10
на 30
), если это значение изменено, я хочу его распечатать.
Другой случай, я хочу получить ключ 'newa'
от d2
как новый добавленный ключ.
Таким образом, после того, как перебор этих 2 dicts, это ожидаемый результат:
"d2" has new key "newa"
Value of "cs" is changed from 10 to 30 of key "b" which is of key "a"
Я следующий код со мной, я пытаюсь со многими петлями, которые не работают, хотя, но это не хороший вариант тоже, поэтому я ищу, чтобы узнать, могу ли я получить ожидаемый результат с рекурсивным фрагментом кода.
for k, v in d1.iteritems():
for k1, v1 in d2.iteritems():
if k is k1:
print k
for k2 in v:
for k3 in v1:
if k2 is k3:
print k2, "sub key matched"
else:
print "sorry no match found"