如何合并多个字典并添加同一个键的值?(Python)

2024-06-30 13:58:05 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有以下词典:

dict1 = {'a': 10, 'b': 8, 'c':3}
dict2 = {'c': 4}
dict3 = {'e':9, 'a':3}

我试图以一种方式合并它们,这样新的(组合的)字典就包含了所有的键,并且同一个键的所有值都被加在一起。例如,在本例中,我想要的输出如下所示:

dict = {'a': 13, 'b': 8, 'c':7, 'e':9}

由于某些值被覆盖,update()方法似乎无法工作。我还尝试了ChainMaps,但遇到了同样的问题。如何合并多个字典并添加同一个键的值?非常感谢:)


Tags: 方法字典方式updatedict词典本例dict1
2条回答

下面的代码应该可以做到这一点:

dict1 = {'a': 10, 'b': 8, 'c':3}
dict2 = {'c': 4}
dict3 = {'e':9, 'a':3}

multiple_dict = [dict1, dict2, dict3]

final_dict = {}

for dict in multiple_dict:
    for key, value in dict.items():
        if key in final_dict:
            final_dict[key] += value
        else:
            final_dict[key] = value

print(final_dict)

这里有一个字典理解来使用^{}^{}实现这一点。在这里,我从所有三个dict创建了一个^{}键。然后我在字典理解中对该集合进行迭代,以获得每个值的总和

>>> from itertools import chain

>>> dict1 = {'a': 10, 'b': 8, 'c':3}
>>> dict2 = {'c': 4}
>>> dict3 = {'e':9, 'a':3}

>>> my_dicts = dict1, dict2, dict3

>>> {k: sum(dd.get(k, 0) for dd in my_dicts) for k in set(chain.from_iterable(d.keys() for d in my_dicts))}
{'a': 13, 'e': 9, 'b': 8, 'c': 7}

相关问题 更多 >