如何在Python中合并两个嵌套的字典?

问题描述:

我有两个嵌套字典数据。我想合并它们以在python中创建一个字典。 字典数据:如何在Python中合并两个嵌套的字典?

dict1 = {'employee':{'dev1': 'Roy'}} 
dict2 = {'employee':{'dev2': 'Biswas'}} 

现在我想创建从中波纹管的字典。 所需的输出

dict_output = {'employee':{ 
        'dev1': 'Roy', 
        'dev2': 'Biswas' 
        } 

     } 

我尝试:

import json 

dict1 = {'employee':{'dev1': 'Roy'}} 
dict2 = {'employee':{'dev2': 'Biswas'}} 

dict1.update(dict2) 
print(json.dumps(dict1, indent=2)) 

输出:

{ 
    "employee": { 
    "dev2": "Biswas" 
    } 
} 

我无法合并两个dictionary.Need帮助它们合并

你可以ju st更新内部字典。

>>> dict1 = {'employee':{'dev1': 'Roy'}} 
>>> dict2 = {'employee':{'dev2': 'Biswas'}} 
>>> 
>>> for key in dict1: 
...  if key in dict2: 
...   dict1[key].update(dict2[key]) 
... 
>>> dict1 
{'employee': {'dev2': 'Biswas', 'dev1': 'Roy'}} 

这里的,如果两个字典有不同的密钥,并且要保持他们所有应该甚至工作的解决方案。

from collections import defaultdict 

dict1 = {'employee': {'dev1': 'Roy'}, 'aKeyNotInDict2': {}} 
dict2 = {'employee': {'dev2': 'Biswas'}, 'aKeyNotInDict1': {}} 
merged_dict = defaultdict(dict) 

merged_dict.update(dict1) 
for key, nested_dict in dict2.items(): 
    merged_dict[key].update(nested_dict) 

print(dict(merged_dict)) 

输出:

{ 
    'employee': {'dev2': 'Biswas', 'dev1': 'Roy'}, 
    'aKeyNotInDict2': {}, 
    'aKeyNotInDict1': {} 
} 

#use a dict comprehension. Adding {} in get() is to set a default return value if the key doesn't exist in dict1 

{k:dict(dict1.get(k,{}).items() + v.items()) for k,v in dict2.items()} 
Out[689]: {'employee': {'dev1': 'Roy', 'dev2': 'Biswas'}} 

#Alternatively, a less readable way to merge the dicts using the dict constructor. 

{k:dict(dict1.get(k,{}), **v) for k,v in dict2.items()} 
Out[690]: {'employee': {'dev1': 'Roy', 'dev2': 'Biswas'}} 

```

[KEY1 == KEY2和dict1.get(KEY1).update(dict2.get(KEY2)),用于KEY1 ,KEY2在拉链(dict1,dict2)]

打印dict1

```