Voglio creare un dizionario i cui valori sono elenchi. Per esempio:
{
1: ['1'],
2: ['1','2'],
3: ['2']
}
Se lo faccio:
d = dict()
a = ['1', '2']
for i in a:
for j in range(int(i), int(i) + 2):
d[j].append(i)
Ottengo un KeyError, perché d [...] non è un elenco. In questo caso, posso aggiungere il seguente codice dopo l'assegnazione di a per inizializzare il dizionario.
for x in range(1, 4):
d[x] = list()
C'è un modo migliore per farlo? Diciamo che non conosco le chiavi di cui avrò bisogno finché non sarò nel secondo for
ciclo. Per esempio:
class relation:
scope_list = list()
...
d = dict()
for relation in relation_list:
for scope_item in relation.scope_list:
d[scope_item].append(relation)
Un'alternativa sarebbe quindi sostituire
d[scope_item].append(relation)
con
if d.has_key(scope_item):
d[scope_item].append(relation)
else:
d[scope_item] = [relation,]
Qual è il modo migliore per gestirlo? Idealmente, aggiungere sarebbe "semplicemente funzionante". Esiste un modo per esprimere che desidero un dizionario di elenchi vuoti, anche se non conosco tutte le chiavi quando creo l'elenco?
collections
modulo funzionano in questo modo, ad esempiocollections.OrderedDict
.