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!

È stato utile?

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})
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top