首页 > 解决方案 > 如何合并多个字典并添加同一个键的值?(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 并遇到了同样的问题。如何合并多个字典并添加相同键的值?非常感谢:)

标签: pythondictionarymerge

解决方案


这是使用and实现此目的的字典理解。在这里,我正在从所有三个字典中创建一个键。然后我在字典理解中对这个集合进行迭代,以获得每个键的的总和。itertools.chain.from_iterable()sum()set

>>> 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}

推荐阅读