2017-03-15 61 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} 
相關問題