Graças a ótimas pessoas no SO, descobri as possibilidades oferecidas por collections.defaultdict
, principalmente em legibilidade e velocidade. Eu os coloquei para uso com sucesso.
Agora eu gostaria de implementar três níveis de dicionários, sendo os dois principais defaultdict
e o mais baixo int
. Não encontro a maneira apropriada de fazer isso. Aqui está a minha tentativa:
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]
Agora isso funciona, mas o seguinte, que é o comportamento desejado, não funciona:
d["key4"]["a1"] + 1
Suspeito que deveria ter declarado em algum lugar que o segundo nível defaultdict
é do tipo int
, mas não encontrei onde ou como fazê-lo.
A razão pela qual estou usando defaultdict
em primeiro lugar é evitar ter que inicializar o dicionário para cada nova chave.
Alguma sugestão mais elegante?
Obrigado pythoneers!
multiprocessing
é infeliz em enviá-las para frente e para trás.