Объединить два словаря в python с одинаковыми ключами - PullRequest
0 голосов
/ 03 мая 2020

Я хочу объединить два словаря в python с одинаковыми ключами

Словарь :

dict1 = { 'a1': { 'b1': { 'c1': 'd1' }}}

dict2 = { 'a1': { 'b1': { 'c2': 'd2' }}}

dict3 = { 'a1': { 'b2': { 'c3': 'd3' }}}

dict4 = { 'a2': { 'b3': { 'c4': 'd4' }}}

Я хочу, чтобы это слилось в

dict1 = {'a1': {'b1': {'c1': 'd1', 'c2': 'd2'}, 'b2': {'c3': 'd3'}},
         'a2': {'b3': {'c4': 'd4'}}}

Я попытался объединиться с update, но он перезаписывает все

Заранее спасибо.

РЕДАКТИРОВАТЬ:

Код, который я пробовал:

dict1.update(dict2)
dict1.update(dict3)
dict1.update(dict4)

Выход:

>>> dict1
{'a1': {'b1': {'c2': 'd2'}}, 'a2': {'b3': {'c4': 'd4'}}}

1 Ответ

0 голосов
/ 03 мая 2020

Проблема в update, работает только на верхнем уровне.

def addin( d1, d2 ):
    for k,v in d2.items():
        if k not in d1:
            d1[k] = v
        else:
            addin( d1[k], v )

merged = {}
addin( merged, dict1 )
addin( merged, dict2 )
addin( merged, dict3 )
addin( merged, dict4 )
print(merged)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...