Я знаю, что есть несколько подобных вопросов, но мой вопрос совершенно другой и трудный для меня. У меня есть два словаря:
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
- мой старый dict и d2
- мой новый dict).
Я хочу перебрать эти словари таким образом, чтобы, если ключ такой же, проверьте его значение (вложенный 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"