如何合并字典?

问题描述 投票:2回答:1

我也想在dict3中打印10:20。如何执行此代码仅打印相同的键格式dict1dict2。我试过了:

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)}
python
1个回答
0
投票

您当前仅迭代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}))
© www.soinside.com 2019 - 2024. All rights reserved.