我有两本字典
dict1 = {'color': {'attri': ['Black']}, 'diameter': {'attri': ['(300, 600)']}}
dict2 = {'size': {'op':'in'}, 'diameter': {'op':'range'}, 'color': {'op':'in'}}
我想合并 2 个字典,这样
dict3 = {'color': {'op': 'in', 'attri': ['Black']}, 'diameter': {'op': 'range', 'attri': ['(300,600)']}}
最佳答案
此方法使用 defaultdict
,即使键只出现在其中一个字典中也是安全的。
import itertools
import collections
dict3 = collections.defaultdict(dict)
for key, value in itertools.chain(dict1.items(), dict2.items()):
dict3[key].update(value)
证明——应用于:
dict1 = {'color': {'attri':['Black']}, 'diameter': {'attri':['(300, 600)']}}
dict2 = {'size': {'op':'in'}, 'diameter': {'op':'range'}, 'color': {'op':'in'}}
dict(dict3)
的输出是:
{'color': {'attri': ['Black'], 'op': 'in'},
'diameter': {'attri': ['(300, 600)'], 'op': 'range'},
'size': {'op': 'in'}}
虽然查看了您的预期输出,但如果键同时出现在两个词典中,您只需要一个结果,在这种情况下我会这样做:
dict3 = {key: {**dict1[key], **dict2[key]}
for key in dict1.keys() & dict2.keys()}
关于python - 如何在python中组合字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50716437/