2016-09-26 4 views
0

Ich habe ein Problem, wie das gesamte Diktat der gleichen Schlüssel zu berechnen? Ich habe einen dict:berechnen Sie den Gesamtwert dict

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

und ich hoffe, die Ergebnisse als:

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

Vielen Dank

+0

Mögliches Duplikat [Gibt es eine pythonic Weise zwei dicts zu kombinieren (Werte für Schlüssel hinzugefügt, die angezeigt werden in beiden)?] (http://stackoverflow.com/questions/11011756/is-there-any-pythonic-way-to-combine-to-dicts-adding-values-for-keys-that-appe) – Querenker

Antwort

0

können Sie ein Wörterbuch Verständnis verwenden, um alle Zahlen in einem Wörterbuch d wie so einfach verschachtelt hinzuzufügen:

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

Ganz einfach:

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

... mit d sein Ihre dict und keine Fehlerprüfung überhaupt (ist der Schlüssel vorhanden, ist es wirklich ein taub äh, usw.).


Wie ganzer Code-Schnipsel mit einem Verständnis:

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 See.

+1

Of Natürlich bedeutet das, dass die genau gleichen Schlüssel, die man beim "Lernen" findet, auch in "Leben" sind. Wenn Sie verschiedene Schlüsselwerte haben, müssen Sie auch prüfen, ob der Schlüssel in 'learning' in' life' steht. Dies kann mit 'for key in learning.keys()' und 'if key in life.keys()' erfolgen –

Verwandte Themen