ich hab ein Phänomen, aus dem ich nicht schlau werde und würde mich sehr über eine Erklärung freuen (weil es mir ziemlich mystisch bis unlogisch erscheint):
Ich hab mehrere Dictionaries, mehrdimensional, alle gleich und am Beginn ohne values hinter allen Keys (die sollten separat in Schleifen eingetragen werden).
Jetzt fülle ich eines dieser Dicts mittels einer Schleife auf (in meinem Fall das agpm_out) und ...
- plop - haben alle gleichartigen Dicts die gleiche Füllung , obwohl die "="-Zuweisung oberhalb der Schleife ist???. So hat zum Beispiel das Dict opt_out auch eine Füllung nachdem man die Schleife ausführt.
Der Code sieht so aus:
Code: Alles auswählen
key1 = pinput.keys()
key2 = pinput[key1[0]].keys()
key3 = pinput[key1[0]][key2[0]].keys()
years = pinput[key1[0]][key2[0]][key3[0]].keys()
parameters = pinput[key1[0]][key2[0]][key3[0]][years[0]].keys()
## ------- erstellen des virgin-dictionaries
agpm_out = {}
agpm_out_wet = {}
agpm_out_dry = {}
agpm_out_nor = {}
for dens in key1:
opt_out = {}
for opt in key2:
ens_out = {}
for ens in key3:
year_out = {}
for year in years:
para_out = {}
for para in parameters:
para_out[para] = {}
para_out['agpm_bef'] = {} # AGPM_BEF is the agpm_end of the year before
year_out[year]=para_out
ens_out[ens]= year_out
opt_out[opt] = ens_out
agpm_out[dens] = opt_out
agpm_out_wet = agpm_out
agpm_out_dry = agpm_out
agpm_out_nor = agpm_out
## -------- zuordnen der Parameter in das dictionary agpm_out
for dens in key1:
for opt in key2:
for ens in key3:
for year in years[1:]: # funktioniert erst ab dem zweiten jahr, da endwert des vorjahres existieren muss
for para in parameters:
agpm_out[dens][opt][ens][year][para] = pinput[dens][opt][ens][year][para]
agpm_out[dens][opt][ens][year]['agpm_bef'] = pinput[dens][opt][ens][year-1]['agpm_end']
# hier wird vorjahreswert zugeordnet
Code: Alles auswählen
agpm_out = {}
Hat jemand eine Idee, um welchen Fehler (ich vermute mal Denkfehler meinerseits ) handeln könnte? Wäre sehr dankbar...