我有很多词,我给这个例子2:
dict1={'green': 3, 'yellow': 5, 'blue': 1}
dict2={'green': 5, 'yellow': 1, 'blue': 3, 'purple': 10}
我一直试图找到一种方法来添加2个dicts,这样我就可以更新现有键的值(sum),并为不存在的键添加键和值。
结果:
results = {'green': 8, 'yellow': 6, 'blue': 4, 'purple': 10}
我试过了dict1.update(dict2)
,但是如你所知,我只有一本包含更新值的字典,而不是总结。
有任何方法可以实现这一目标吗?
更新
解决:实际上是collections.Counter做了诀窍......谢谢
答案 0 :(得分:0)
{x: dict1.get(x,0) + dict2.get(x,0) for x in set(dict1.keys() + dict2.keys())}
输出:
{'blue': 4, 'purple': 10, 'green': 8, 'yellow': 6}
答案 1 :(得分:0)
dicts = [dict1, dict2]
dict([(key, sum(map(lambda x: x.get(key) or 0, dicts))) for key in set(reduce(lambda a,b: a + b, map(lambda x: x.keys(), dicts), []))])
[{'blue':1,'green':3,'yellow':5},{'blue':3,'purple':10,'green':5,'yellow':1}]
或更具可读性
dicts = [dict1, dict2]
keys = reduce(lambda a,b: a + b, map(lambda x: x.keys(), dicts), [])
dict([(key, sum(map(lambda x: x.get(key) or 0, dicts))) for key in set(keys)])