gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 13:10:55 25 4
gpt4 key购买 nike

我有两个嵌套的字典数据。我想合并它们以在 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"
}
}

我无法合并这两个字典。需要帮助来合并它们

最佳答案

这段代码是为了支持稍微不同的“合并”含义。假设我们有一个嵌套字典:

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)

关于python - 如何在 python 中合并两个嵌套的字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43797333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com