2016-09-26 24 views
0

私は問題があります、どのように同じキーの合計dictを計算するには?私はdictの持っている:合計値を計算する

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

を、私はその結果を願っています:dがあることで...

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

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

は非常に

+0

可能な複製両方))?](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 
2枚のdictsを(表示されたキーの値を加算し結合する任意の神託の方法はあります[の
1

非常にシンプルありがとう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

Ofコースでは、学習中のキーと全く同じキーが「生命」にあることを意味します。異なるキー値を持つ場合は、 '学習 'のキーが' life'にあるかどうかをチェックする必要もあります。これは 'for key in learning.keys()'と 'if key in life.keys()'を使って行うことができます。 –