2017-04-13 7 views
0

Vielen Dank für Ihre Hilfe im Voraus!Python 3: Erstellen eines Wörterbuchs/Hinzufügen von Werten zu einem verschachtelten Wörterbuch

Ich versuche, mein Problem zu vereinfachen: Ich habe eine verschachtelte dict aussehen wie: nach, dass ich eine for-Schleife ein Verhältnis der verschachtelten dict Werte

d={'a' :{ '1990': 10, '1991':20, '1992':30},'b':{ '1990':15, '1991':40, '1992':50}} 
for key in d: 
    rate = d[key]['1990']/d[key]['1992'] 
    print(rate) 

jetzt zu berechnen geschrieben würde Ich mag erstellen ein neues Schlüssel-Wert-Paar für jeden verschachtelten dict, so dass am Ende sieht es so aus:

d = {'a' :{ '1990': 10, '1991':20, '1992':30, 'rate':0.33333},'b':{ '1990':15, '1991':40, '1992':50, 'rate':0.3}} 

oder eine neue dict wie die Suche zu erstellen:

d2 = {'a':{'rate':0.3333}, 'b':{'rate':0.3}} 

bitte helfen Sie mit der Lösung am einfachsten für Sie, ich denke, Hinzufügen zu den bestehenden Diktat wäre besser?

danke!

+1

Für dasselbe Wörterbuch können Sie 'd [key] ['rate'] = rate 'in der for-Schleife verwenden. Für ein neues Wörterbuch deklariere vorher ein Wörterbuch und benutze 'd2 [key] ['rate'] = rate' in der gleichen Schleife – kuro

+0

vielen Dank! es hat auch im größeren Code funktioniert! und ich versuchte .append und so viele andere Dinge, und die Lösung ist so einfach Im wirklich ein noob – TDot

Antwort

2

Sie können einfach die Taste „rate“ einfügen, die den Wert hat Sie berechnet haben:

d = { 
    'a' :{ '1990': 10, '1991':20, '1992':30}, 
    'b':{ '1990':15, '1991':40, '1992':50} 
} 

for key in d: 
    rate = d[key]['1990']/d[key]['1992'] 
    print(rate) 
    d[key]['rate']=rate 

print d 

FYI, falls Sie python2 verwenden, sollten Sie rate = float(d[key]['1990'])/d[key]['1992'] tun.

+1

Der Float-Teil ist nicht notwendig, wenn man bedenkt, wie der Titel sagt, dass wir Python verwenden – Damien

+0

@Damien Oh ich habe es verpasst . Bearbeitete die Antwort. Vielen Dank! – Squizz

Verwandte Themen