我也想在dict3
中打印10:20。如何执行此代码仅打印相同的键格式dict1
和dict2
。我试过了:
def mergeDicts(dict1, dict2):
dict3 = {}
for key, value in dict1.items():
dict3[key] = (value, dict2[key])
return dict3
print(mergeDicts({1:3, 2:4},{1:5, 2:6, 10:20}))
out: {1: (3, 5), 2: (4, 6)}
您当前仅迭代dict1
中的键/值,因此不会添加10
中缺少的dict2
键。
相反,您可以将两个字典与列表的collections.defaultdict
合并,并在迭代每个字典时添加两个字典中的项目。我们可以使用字典理解将最后的值转换为元组。
collections.defaultdict
输出:
from collections import defaultdict
def mergeDicts(*dicts):
dict3 = defaultdict(list)
for d in dicts:
for k, v in d.items():
dict3[k].append(v)
return {k: tuple(v) for k, v in dict3.items()}
print(mergeDicts({1:3, 2:4}, {1:5, 2:6, 10:20}))