Dictionary "dynamisch" erweitern - 2-d Array
Verfasst: Mittwoch 4. November 2009, 14:00
Hallo Leute,
ich hoffe ihr könnt mir bei meinem blöden Dictionary Problem weiterhelfen, irgendwie steh ich auf dem Schlauch...
Mit folgendem Beispielcode will ich eigentlich nichts weiter erreichen, als ein Dictionary zu erhalten, dessen Einträge ich über z.B. nodaldata_dict[2]['u2'] ansprechen kann. Das Dictionary soll dabei selbstständig für den zweiten Schlüssel anwachsen sprich, num_nodes ist bekannt und varnames ist unbekannt (falls es nicht anders geht, könnte ich zur Not auch varnames in einer Vorher-Schleife auslesen). Die Verschachtelung der beiden Schleifen ist leider nicht anders möglich und quasi vorgegeben...
Als Ergebnis zu oberen Zeilen erhalte ich für alle Erst-Schlüssel immer die Werte des letzten Schleifendurchlaufs:
Als Ergebnis hätte ich aber gern:
Könnt Ihr mir vielleicht auf die Sprünge helfen, warum die vorherigen Einträge immer wieder überschrieben werden? Hab ich da irgendwo einen Denkfehler in den Schleifen eingebaut bzw. da es ja nicht funktionert, WO liegt mein Denkfehler?
Viele Grüße
Uwe
ich hoffe ihr könnt mir bei meinem blöden Dictionary Problem weiterhelfen, irgendwie steh ich auf dem Schlauch...
Mit folgendem Beispielcode will ich eigentlich nichts weiter erreichen, als ein Dictionary zu erhalten, dessen Einträge ich über z.B. nodaldata_dict[2]['u2'] ansprechen kann. Das Dictionary soll dabei selbstständig für den zweiten Schlüssel anwachsen sprich, num_nodes ist bekannt und varnames ist unbekannt (falls es nicht anders geht, könnte ich zur Not auch varnames in einer Vorher-Schleife auslesen). Die Verschachtelung der beiden Schleifen ist leider nicht anders möglich und quasi vorgegeben...
Code: Alles auswählen
import time
varnames=['u1','u2','nt121', 'n11']
num_nodes=3
nodaldata_dict = {}.fromkeys([x for x in range(num_nodes)], {})
for name in varnames:
for i in range(num_nodes):
if not name == "nt121":
print 'node:', i, name, time.time()
nodaldata_dict[i][name] = time.time()
time.sleep(0.1)
for key in nodaldata_dict.keys():
print '->', key, nodaldata_dict[key]
Code: Alles auswählen
node: 0 u1 1257335371.31
node: 1 u1 1257335371.41
node: 2 u1 1257335371.51
node: 0 u2 1257335371.61
node: 1 u2 1257335371.71
node: 2 u2 1257335371.81
node: 0 nt11 1257335371.91
node: 1 nt11 1257335372.01
node: 2 nt11 1257335372.11
-> 0 {'nt11': 1257335372.107372, 'u1': 1257335371.5055981, 'u2': 1257335371.8064871}
-> 1 {'nt11': 1257335372.107372, 'u1': 1257335371.5055981, 'u2': 1257335371.8064871}
-> 2 {'nt11': 1257335372.107372, 'u1': 1257335371.5055981, 'u2': 1257335371.8064871}
Code: Alles auswählen
-> 0 {'nt11': 1257335371.91, 'u1': 1257335371.31, 'u2': 1257335371.61}
-> 1 {'nt11': 1257335372.01, 'u1': 1257335371.41, 'u2': 1257335371.71}
-> 2 {'nt11': 1257335372.11, 'u1': 1257335371.51, 'u2': 1257335371.81}
Viele Grüße
Uwe