python dictionary update method
-
05-07-2019 - |
Question
I have a list string tag.
I am trying to initialize a dictionary with the key as the tag string and values as the array index.
for i, ithTag in enumerate(tag):
tagDict.update(ithTag=i)
The above returns me {'ithTag': 608} 608 is the 608th index
My problem is that while the i is being interpreted as a variable, Python is treating the "ithTag" as a string instead of a variable.
I'm confused, it is kind of hard to google these kind of specific questions. I hope I worded the title of this question correctly,
Thanks!
Solution
You actually want to do this:
for i, tag in enumerate(tag):
tagDict[tag] = i
The .update() method is used for updating a dictionary using another dictionary, not for changing a single key/value pair.
OTHER TIPS
If you want to be clever:
tagDict.update(map(reversed, enumerate(tag)))
Thanks to Brian for the update. This is apparently ~5% faster than the iterative version.
(EDIT: Thanks saverio for pointing out my answer was incorrect (now fixed). Probably the most efficient/Pythonic way would be Torsten Marek's answer, slightly modified:
tagDict.update((t, i) for (i,t) in enumerate(tag))
)
It's a one-liner:
tagDict = dict((t, i) for i, t in enumerate(tag))
I think this is what you want to do:
d = {}
for i, tag in enumerate(ithTag):
d[tag] = i
Try
tagDict[ithTag] = i
I think what you want is this:
for i, ithTag in enumerate(tag):
tagDict.update({ithTag: i})