Gracias a algunas personas excelentes en SO, descubrí las posibilidades que ofrece collections.defaultdict
, especialmente en legibilidad y velocidad. Los he puesto en uso con éxito.
Ahora me gustaría implementar tres niveles de diccionarios, siendo los dos superiores defaultdict
y el más bajo int
. No encuentro la forma adecuada de hacer esto. Aquí está 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 esto funciona, pero lo siguiente, que es el comportamiento deseado, no funciona:
d["key4"]["a1"] + 1
Sospecho que debería haber declarado en alguna parte que el segundo nivel defaultdict
es de tipo int
, pero no encontré dónde ni cómo hacerlo.
La razón 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 pitoneros!
multiprocessing
está contento con enviarlos de un lado a otro.