2017-03-15 63 views
1

我有一个字典作为 -的Python:添加“N”字典的值具有相同的键和存储到一个字典

dict_1 = { 'A' : {'1029' : 3, '1039' : 5}, 'B' : {'1029' : 3, '1039' : 5}, 'C' : {'1008' : 1, '1029' : 3, '1039' : 8, '1050' : 1}, 'D' : {'1008' : 1, '1029' : 10, '1039' : 3}} 

我想要一个结果作为此外,所有类似的数字。即

result = {'1008' : 2, '1029' : 19, '1039' : 21, '1050' : 1} 

方法我都用过:

我创建的列表与dict_1作为

list_new = [ {'1029' : 3, '1039' : 5}, {'1029' : 3, '1039' : 5}, {'1008' : 1, '1029' : 3, '1039' : 8, '1050' : 1}, {'1008' : 1, '1029' : 10, '1039' : 3}] 

然后我用下面的代码:

for i in range(0, len(list_new)): 
     for j in range(i + 1, len(list_new)): 
      if (i == 0 and j == 1): 
       dict_12 = {k: list_new[0].get(k, 0) + list_new[1].get(k, 0) for k in set(list_new[0]) | set(list_new[1])} 

      else: 
       dict_13 = {k: dict_12.get(k, 0) + list_new[j].get(k, 0) for k in set(dict_12) | set(list_new[j])} 
       dict_12.clear() 
       dict_12.update(dict_13) 

但它给人一种错误的结果..如果我将在上面的代码中评论最后2行,那么它在3次迭代中工作正常。但我希望代码运行'n'迭代。

对此,我需要存储以前的结果。任何人都可以请帮助我一样。

提前致谢!

回答

2
sum_dict = {} 
for d in dict_1.values(): 
    for key, val in d.items(): 
     if key in sum_dict: 
      sum_dict[key] += val 
     else: 
      sum_dict[key] = val 

>>> sum_dict 
{'1050': 1, '1039': 21, '1029': 19, '1008': 2} 
相关问题