gpt4 book ai didi

python - 合并两个具有相同键的字典

转载 作者:行者123 更新时间:2023-12-01 08:22:03 25 4
gpt4 key购买 nike

我有两个从配置文件加载的词典,格式如下: {key: (value, files_name)}

使用files_name:我可以在其中找到该值的文件。

例如:

dict_1 = {'a': ({'b': ({'c': (1, ['file_1'])}, ['file_1'])}, ['file_1'])}
dict_2 = {'a': ({'b': ({'c': (2, ['file_2'])}, ['file_2'])}, ['file_2'])}

我想将它们合并在一起,并将文件名列表串联起来。

基本上,按照上面的示例,输出应该是:

{'a': ({'b': ({'c': (1, ['file_1', 'file_2'])}, ['file_1', 'file_2'])}, ['file_1', 'file_2'])}

最佳答案

通过递归,可以使用任何复杂的字典来完成,只要两个字典中的结构和键相同。

def mergedict(dd1, dd2):
dict_res = {}
for key, val in dd1.items():
if isinstance(val[0], dict):
dict_res[key] = (mergedict(val[0], dd2[key][0]), val[1] + dd2[key][1])
else:
dict_res[key] = (val[0], val[1] + dd2[key][1])
return dict_res

所以如果你这样做:

rr = mergedict(dict_1, dict_2)
print(rr)

根据你的命令,你得到:

{'a': ({'b': ({'c': (1, ['file_1', 'file_2'])}, ['file_1', 'file_2'])}, ['file_1', 'file_2'])}

这是您的预期输出。

关于python - 合并两个具有相同键的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54578870/

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