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的唯一项并不重要。使用
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} >>> |
注意:请随意问你这里有没有什么不明白的地方——如果你不清楚咒语为什么会起作用,那么学习咒语就没有好处了!