如何在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
```