méthode de mise à jour du dictionnaire python
-
05-07-2019 - |
Question
J'ai une balise de chaîne de liste.
J'essaie d'initialiser un dictionnaire avec la clé comme chaîne de balise et les valeurs comme index de tableau.
for i, ithTag in enumerate(tag):
tagDict.update(ithTag=i)
Ce qui précède me renvoie {'ithTag': 608} 608 est le 608ème index
Mon problème est que, même si le i est interprété comme une variable, Python traite le "ithTag". sous forme de chaîne au lieu d'une variable.
Je suis confus, il est difficile de chercher sur Google ce genre de questions spécifiques. J'espère avoir correctement libellé le titre de cette question,
Merci!
La solution
Vous voulez réellement faire ceci:
for i, tag in enumerate(tag):
tagDict[tag] = i
La méthode .update () est utilisée pour mettre à jour un dictionnaire en utilisant un autre dictionnaire, pas pour changer une paire paire clé / valeur.
Autres conseils
Si vous voulez être intelligent:
tagDict.update(map(reversed, enumerate(tag)))
Merci à Brian pour la mise à jour. C'est apparemment environ 5% plus rapide que la version itérative.
(EDIT: Merci, saverio, d'avoir souligné que ma réponse était incorrecte (maintenant corrigée). La manière la plus efficace / Pythonique serait probablement la réponse de Torsten Marek, légèrement modifiée:
tagDict.update((t, i) for (i,t) in enumerate(tag))
)
C'est un one-liner:
tagDict = dict((t, i) for i, t in enumerate(tag))
Je pense que c'est ce que vous voulez faire:
d = {}
for i, tag in enumerate(ithTag):
d[tag] = i
Essayez
tagDict[ithTag] = i
Je pense que ce que vous voulez, c'est ceci:
for i, ithTag in enumerate(tag):
tagDict.update({ithTag: i})