Grazie ad alcune persone fantastiche su SO, ho scoperto le possibilità offerte collections.defaultdict
, in particolare in termini di leggibilità e velocità. Li ho usati con successo.
Ora vorrei implementare tre livelli di dizionari, di cui i due principali sono quelli defaultdict
più bassi int
. Non trovo il modo appropriato per farlo. Ecco il mio tentativo:
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]
Ora funziona, ma il seguente, che è il comportamento desiderato, non funziona:
d["key4"]["a1"] + 1
Sospetto che avrei dovuto dichiarare da qualche parte che il secondo livello defaultdict
è di tipo int
, ma non ho trovato dove o come farlo.
Il motivo che sto usando defaultdict
in primo luogo è quello di evitare di dover inizializzare il dizionario per ogni nuova chiave.
Qualche suggerimento più elegante?
Grazie pitoni!
multiprocessing
non è contento di inviarli avanti e indietro.