2016-03-15 101 views
-4

比如我有两个类型的字典:如何从不同的字典基础上增加价值的关键

a = {'a':1,'b':0, 'c':5} 
b = {'d':4,'a':2} 

虽然update()函数可以刷新旧的价值观念,像

a.update(b) 

将返回

{'a': 2, 'b': 0, 'c': 5, 'd': 4} 

但我想要他们的总和,换句话说,我想要

{'a': 3, 'b': 0, 'c': 5, 'd': 4} 

这样的值“a”既是字典

我如何能做到这一点的总和?

+4

*我该怎么做?*通过编写代码*任何人都可以为我编写代码?*不,SO不适用于gimmetehcodez。做一些研究和复出,我们将非常乐意帮助你 –

+0

看看'collections.defaultdict'。 – asimoneau

回答

0

collections.Counter可能会给你想要的东西。 collections.Counter.update()文档说:

像dict.update(),但增加了计数,而不是替换它们。

from collections import Counter 

a = Counter({'a':1, 'b':0, 'c':5}) 
b = {'d':4, 'a':2} 

a.update(b) 

print a 

结果:

Counter({'c': 5, 'd': 4, 'a': 3, 'b': 0}) 
+0

谢谢!这是我想要的,因为我刚刚接触到这个,所以对于我的模糊描述感到抱歉。 – Stryx

1

下面的代码将更新a你想要的方式:

a = {'a': 1, 'b': 0, 'c': 5} 
b = {'d': 4, 'a': 2} 

for k, v in b.iteritems(): 
    a[k] = a.get(k, 0) + v 

print a # {'a': 3, 'c': 5, 'b': 0, 'd': 4} 
0

您可以为您的字典一个新的类,并实现功能 __add__(destDictionary,DictionaryToAdd) #The code for adding them

现在,如果你在一个类中创建2个Dictionary对象并将它们添加,它将在destDictionary中返回它们的总和,例如:

a=DictionaryClass({'a':1,'b':0, 'c':5}) 
b=DictionaryClass({'d':4,'a':2}) 
c=a+b 

这会使对象c成为a + b与用于添加它们的代码的总和,您在__add__函数中实现它们。