Voglio creare un dizionario i cui valori siano elenchi. Per esempio:Python che crea un dizionario di liste
{
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, a causa d [...] non è una lista. 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 ho bisogno fino a quando non sono nel secondo ciclo for
. 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 poi sostituendo
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 gestire questa situazione? Idealmente, l'aggiunta "funzionerebbe". C'è un modo per esprimere che voglio un dizionario di liste vuote, anche se non conosco tutte le chiavi quando creo la lista per la prima volta?
Anche altri dizionari nel modulo 'collections' funzionano in questo modo, ad esempio' collections.OrderedDict'. – txsaw1
Oh. È grandioso E non devi inizializzare su '= []'. Roba buona! –