组合两个字典并为公用键添加值,而无需使用计数器方法

时间:2019-05-14 07:55:43

标签: python python-3.x

如何在不使用计数器方法的情况下结合两个用于通用键的字典加值?

d1 = {'a': 100, 'b': 200, 'c':300}
d2 = {'a': 300, 'b': 200, 'd':400}

输出-

{'a': 400, 'b': 400, 'd': 400, 'c': 300} 

2 个答案:

答案 0 :(得分:2)

您可以进行设置操作,迭代d1d2的并集中的键并求和相应的值。

res = {k: d1.get(k, 0) + d2.get(k, 0) for k in set(d1) | set(d2)}

输出

{'b': 400, 'd': 400, 'a': 400, 'c': 300}

答案 1 :(得分:1)

您可以通过itertools.chain将两个字典链接在一起,从而同时迭代两个字典,然后将通用键的值相加

import itertools

d1 = {'a': 100, 'b': 200, 'c':300}
d2 = {'a': 300, 'b': 200, 'd':400}

new_dict = {}

#Chain d1 and d2 together
for k, v in itertools.chain(d1.items(), d2.items()):
    #Add up values for common keys
    if k in new_dict:
        new_dict[k] += v
    else:
        new_dict[k] = v

print(new_dict)

输出将为

{'a': 400, 'b': 400, 'c': 300, 'd': 400}