关于python:通过添加值进行字典合并

Dictionary merge by adding values

本问题已经有最佳答案,请猛点这里访问。

假设我有两本字典

1
2
3
a = {'milk':90, 'coffee':80, 'rice':100, 'Cheese': 70}

b = {'milk':90, 'coffee':80, 'pulses': 100,'Alcohol':750}

我想将这两个字典合并,通过添加字典的公共元素的值,其结果应为:

1
c = {'milk':180, 'coffee':160, 'rice':100, 'Cheese':70, 'pulses':100, 'Alcohol':750}

我正在我的水平上尝试,请建议是否有人对此有解决方案。


使用任意一个dict的EDOCX1[0]并添加它们的值来生成第三个dict,因此,只使用其中一个dict的唯一项并不重要。使用dict.get从两个dict中获取每个键的值,如果该项不存在(因为我们正在添加),则默认为0

1
2
3
4
5
6
>>> c = {}
>>> for key in set(a.keys() + b.keys()):
...     c[key] = a.get(key, 0) + b.get(key, 0)
...
>>> c
{'Cheese': 70, 'coffee': 160, 'Alcohol': 750, 'pulses': 100, 'rice': 100, 'milk': 180}

如果你喜欢的话,还有一个一行的版本:

1
2
3
4
>>> d = {key: a.get(key, 0) + b.get(key, 0) for key in set(a.keys() + b.keys())}
>>> d == c
True
>>>


你可以尝试这样的方法:

1
2
3
4
5
6
7
8
9
10
>>> def merge_dicts(a,b):
...   c = {}
...   for k, v in a.items():
...     c[k] = a[k] + b.get(k, 0)
...   b.update(c)
...   return b
...
>>> merge_dicts(a,b)
{'Cheese': 70, 'coffee': 160, 'Alcohol': 750, 'pulses': 100, 'rice': 100, 'milk': 180}
>>>

注意:请随意问你这里有没有什么不明白的地方——如果你不清楚咒语为什么会起作用,那么学习咒语就没有好处了!