metodo di aggiornamento del dizionario python
-
05-07-2019 - |
Domanda
Ho un tag stringa elenco.
Sto cercando di inizializzare un dizionario con la chiave come stringa tag e i valori come indice array.
for i, ithTag in enumerate(tag):
tagDict.update(ithTag=i)
Quanto sopra mi restituisce {'ithTag': 608} 608 è il 608 ° indice
Il mio problema è che mentre l'i viene interpretato come una variabile, Python sta trattando il "quotTag" come stringa anziché come variabile.
Sono confuso, è un po 'difficile cercare su Google questo tipo di domande specifiche. Spero di aver formulato correttamente il titolo di questa domanda,
Grazie!
Soluzione
In realtà vuoi farlo:
for i, tag in enumerate(tag):
tagDict[tag] = i
Il metodo .update () è usato per aggiornare un dizionario usando un altro dizionario, non per cambiare una singola coppia chiave / valore.
Altri suggerimenti
Se vuoi essere intelligente:
tagDict.update(map(reversed, enumerate(tag)))
Grazie a Brian per l'aggiornamento. Questo è apparentemente ~ 5% più veloce della versione iterativa.
(EDIT: grazie saverio per aver sottolineato la mia risposta era errata (ora risolto). Probabilmente il modo più efficiente / Pythonic sarebbe la risposta di Torsten Marek, leggermente modificata:
tagDict.update((t, i) for (i,t) in enumerate(tag))
)
È un one-liner:
tagDict = dict((t, i) for i, t in enumerate(tag))
Penso che sia questo ciò che vuoi fare:
d = {}
for i, tag in enumerate(ithTag):
d[tag] = i
Prova
tagDict[ithTag] = i
Penso che ciò che vuoi sia questo:
for i, ithTag in enumerate(tag):
tagDict.update({ithTag: i})