2016-09-26 46 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()'来完成 –