我有两个嵌套的字典数据。我想将它们合并以在 python 中创建一本字典。
词典数据:
dict1 = {'employee':{'dev1': 'Roy'}}
dict2 = {'employee':{'dev2': 'Biswas'}}
现在我试图用它们创建一个像下面这样的字典。所需输出
dict_output = {'employee':{
'dev1': 'Roy',
'dev2': 'Biswas'
}
}
my try:
import json
dict1 = {'employee':{'dev1': 'Roy'}}
dict2 = {'employee':{'dev2': 'Biswas'}}
dict1.update(dict2)
print(json.dumps(dict1, indent=2))
Output:
{
"employee": {
"dev2": "Biswas"
}
}
我无法合并这两个字典。需要帮助来合并它们
这段代码是为了支持“合并”的含义略有不同。假设我们有一个嵌套字典:
dict1 = {'employee':{'devs':{'python':{'dev1':'Roy'}}}}
dict2 = {'employee':{'devs':{'cpp':{'dev1':'Biswas'}}}}
在这种情况下,简单循环解决方案返回:
{'employee': {'devs': {'cpp': {'dev1': 'Biswas'}}}}
虽然“直观”的答案应该是:
{'employee': {'devs': {'python': {'dev1': 'Roy'}, 'cpp': {'dev1': 'Biswas'}}}}
这只是一个简单的例子,真实的例子可能要复杂得多。
下面是我对这样一个嵌套字典的尝试。它适用于使用递归的嵌套数据。而且它也有一些限制。例如,如果 dict1 和 dict2 具有相同的值但不是字典,则 dict2 具有优先权。另一方面,如果 dict1 包含字典,而 dict2 包含具有相同键的值,则优先级高于 dict1,而忽略 dict2。其他限制将需要更改代码。
def merge_dict(dict1, dict2):
for key, val in dict1.items():
if type(val) == dict:
if key in dict2 and type(dict2[key] == dict):
merge_dict(dict1[key], dict2[key])
else:
if key in dict2:
dict1[key] = dict2[key]
for key, val in dict2.items():
if not key in dict1:
dict1[key] = val
return dict1
dict1 = merge_dict(dict1, dict2)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)