1. key不重复
- 更新法
a = {'cat': 10, 'dog': 10}
b = {'pig': 20}
a.update(b)
# a
# {'cat': 10, 'dog': 10, 'pig': 20}
- 解包法
a = {'cat': 10, 'dog': 10}
b = {'pig': 20}
c = {**a, **b}
# c
# {'cat': 10, 'dog': 10, 'pig': 20}
2. key重复
def sum_dict(x, y):
temp = {}
for k in x.keys() | y.keys():
temp[k] = sum(i.get(k,0) for i in (x,y))
return temp
a = {'cat': 10, 'dog': 10}
b = {'cat': 10, 'dog': 10, 'pig': 20}
c = sum_dict(a,b)
# c
# {'dog': 20, 'cat': 20, 'pig': 20}
合并多个字典时, 可利用reduce实现
from functools import reduce
d = reduce(sum_dict, [a, b, c])
# d
# {'cat': 40, 'dog': 40, 'pig': 40}
也可使用reduce + lambda 简写, 一步到位
d = reduce(lambda x, y: {k: sum(i.get(k, 0) for i in (x, y)) for k in x.keys() | y.keys()}, [a, b, c])