Gracias a algunas personas geniales en SO, descubrí las posibilidades que ofrece collections.defaultdict
, especialmente en legibilidad y velocidad. Los puse en uso con éxito.Múltiples niveles de 'collection.defaultdict' en Python
Ahora me gustaría implementar tres niveles de diccionarios, los dos superiores son defaultdict
y el más bajo es int
. No encuentro la manera apropiada de hacer esto. Aquí es mi intento:
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]
Ahora bien, esto funciona, pero el siguiente, que es el comportamiento deseado, no:
d["key4"]["a1"] + 1
sospecho que debería haber declarado en alguna parte que el segundo nivel defaultdict
es del tipo int
, pero no encontré dónde ni cómo hacerlo.
La razón por la que estoy usando defaultdict
en primer lugar es para evitar tener que inicializar el diccionario para cada nueva clave.
¿Alguna sugerencia más elegante?
Gracias pythoneers!
El único problema es que no saldrá en vinagre, lo que significa 'multiprocesamiento' no está contento con enviarlos de un lado a otro. – Noah
@Noah: saltará si utiliza una función denominada de nivel de módulo en lugar de una lambda. – interjay
por supuesto, tonto yo. – Noah