ich habe ein kleines Problem mit einem mehrdimensionalen Dictionary: Es führt den "try" Befehl nicht aus (siehe unten). Stattdessen bleibt der "int_value" in der Ausgabe immer "0".
Das Schema meines Problems sieht so aus (leider war es mir nicht möglich ein kleines Beispielprogramm zu schreiben, bei dem das gleiche Problem auftaucht):
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: cp1252 -*-
metacalc_out = {}
for density in densclass:
option_out={}
for option in optclass:
run_out={}
for run in ensrun:
year_out={}
for year in yearrun:
parameter_out={}
for parameter in outset2:
int_value = 0
for days in pinput[density][option][run][year]:
try: # nur wenn er den parameter findet, addiert er ihn
int_value = int_value + pinput[density][option][run][year][days][parameter]
print pinput[density][option][run][year][days][parameter]
except:
int_value = int_value + 0
parameter_out[parameter]=int_value
Wenn ich eingebe:
Code: Alles auswählen
pinput[density][option][run][year][98]['yld']
>> 0.1
Es gäbe also einen Wert für den gesuchten Parameter 'yld'. Warum addiert ihn das Programm nicht?
Hätte jemand eine Idee?
Würd mich sehr freuen und schon mal vielen Dank!
Korbinian
P.S: Vielleicht hilft es ja:
Ich hab ein Beispielprogramm, dass so aussieht, aber es funktioniert dort auch!! Wenn jemand den Unterschied findet, dann hätten wir gewonnen...
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: cp1252 -*-
outputset = ['b']
dict1 = {'erstes':{'day1':{'a':1,'b':1},'day2':{'a':1,'b':1}},
'zweites':{'day1':{'a':1},'day2':{'a':1}}}
for element in outputset:
key_out = {}
for key in dict1:
el_out = {}
value = 0
for day in dict1[key]:
try:
value = value + dict1[key][day][element]
print dict1[key][day][element]
except:
value=value
el_out[element]=value
key_out[key]=el_out
print key_out