2016-09-26 75 views
0

我有一個問題,如何計算相同鍵的總字典?我有一個字典:計算總值字典

{'learning': {'DOC1': 0.14054651081081646, 
       'DOC2': 0, 
       'DOC3': 0.4684883693693881}, 
'life':  {'DOC1': 0.14054651081081646, 
       'DOC2': 0.20078072972973776, 
       'DOC3': 0} 
} 

,我希望的結果爲:

{'learning life': { 
     'DOC1': DOC1 in learning + DOC1 in life, 
     'DOC2': DOC2 in learning + DOC2 in life, 
     'DOC3': DOC3 in learning + DOC3 in life,}} 

非常感謝您

+0

的[有兩種類型的字典(用於顯示鍵增加值組合任何Python的方式可能的複製在兩個)?](http://stackoverflow.com/questions/11011756/is-there-any-pythonic-way-to-combine-two-dicts-adding-values-for-keys-that-appe) – Querenker

回答

0

您可以使用字典解析添加嵌套在字典d的所有號碼,就像這樣:

totals = {k: sum(v.get(k, 0) for v in d.values()) for k in d.values()[0]} # dict of totals 
1

很簡單:

for k in d['learning']: 
    print(d['learning'][k] + d['life'][k]) 

...與d是你的dict並沒有錯誤檢查(鑰匙是否存在,它真的是一個麻木呃等)。


作爲整個代碼段與理解:

d = {'learning': {'DOC1': 0.14054651081081646, 
       'DOC2': 0, 
       'DOC3': 0.4684883693693881}, 
'life':  {'DOC1': 0.14054651081081646, 
       'DOC2': 0.20078072972973776, 
       'DOC3': 0} 
} 

d['sum'] = [d['learning'][k] + d['life'][k] 
      for k in d['learning']] 
print(d) 

a demo on ideone.com

+1

當然,這意味着'學習'中完全相同的密鑰也在'生命'中。如果你有不同的鍵值,你還必須檢查'學習'中的鍵是否在'生命'中。這可以通過使用'for key in learning.keys()'和'if key in life.keys()'來完成 –