Grâce à des gens formidables sur SO, j'ai découvert les possibilités offertes par collections.defaultdict
, notamment en termes de lisibilité et de rapidité. Je les ai mis à profit avec succès.
Je voudrais maintenant implémenter trois niveaux de dictionnaires, les deux premiers étant defaultdict
et le plus bas int
. Je ne trouve pas la manière appropriée de faire cela. Voici ma tentative:
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]
Maintenant, cela fonctionne, mais ce qui suit, qui est le comportement souhaité, ne fonctionne pas:
d["key4"]["a1"] + 1
Je soupçonne que j'aurais dû déclarer quelque part que le deuxième niveau defaultdict
est de type int
, mais je n'ai pas trouvé où ni comment le faire.
La raison pour laquelle j'utilise defaultdict
en premier lieu est d'éviter d'avoir à initialiser le dictionnaire pour chaque nouvelle clé.
Une suggestion plus élégante?
Merci pythoneers!
multiprocessing
est mécontent de les envoyer dans les deux sens.