Grâce à des gens, j'ai découvert les possibilités offertes par collections.defaultdict
, notamment dans la lisibilité et de la vitesse. J'ai mis à utiliser avec succès.
Maintenant, je tiens à mettre en œuvre trois niveaux de dictionnaires, les deux premiers étant defaultdict
et le plus bas d'un cours d' int
. Je ne trouve pas le moyen le plus approprié pour ce faire. 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 le suivant, qui est le comportement souhaité, n'est-ce pas:
d["key4"]["a1"] + 1
Je soupçonne que je devrais avoir déclaré quelque part que le deuxième niveau de l' defaultdict
est de type int
, mais je n'ai pas trouvé où et comment le faire.
La raison pour laquelle je suis à l'aide de defaultdict
, en premier lieu, pour éviter d'avoir à initialiser le dictionnaire pour chaque nouvelle clé.
Plus élégant suggestion?
Grâce pythoneers!