Dank einiger großartiger Leute auf SO habe ich die Möglichkeiten entdeckt, die sich bieten collections.defaultdict
, insbesondere in Bezug auf Lesbarkeit und Geschwindigkeit. Ich habe sie mit Erfolg eingesetzt.
Jetzt möchte ich drei Ebenen von Wörterbüchern implementieren, die zwei obersten defaultdict
und die unterste int
. Ich finde keinen geeigneten Weg, dies zu tun. Hier ist mein Versuch:
from collections import defaultdict
d = defaultdict(defaultdict)
a = [("key1", {"a1":22, "a2":33}),
("key2", {"a1":32, "a2":55}),
("key3", {"a1":43, "a2":44})]
for i in a:
d[i[0]] = i[1]
Nun funktioniert dies, aber das Folgende, was das gewünschte Verhalten ist, funktioniert nicht:
d["key4"]["a1"] + 1
Ich vermute, ich hätte irgendwo erklären sollen, dass die zweite Ebene defaultdict
vom Typ ist int
, aber ich habe nicht gefunden, wo oder wie ich das tun soll.
Der Grund, den ich defaultdict
in erster Linie verwende, besteht darin, zu vermeiden, dass das Wörterbuch für jeden neuen Schlüssel initialisiert werden muss.
Noch eleganterer Vorschlag?
Danke Pythononeer!
multiprocessing
es unglücklich ist, diese hin und her zu senden.