Wednesday, February 9, 2011

python dictionary update method

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!

  • 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.

    From Jerub
  • I think this is what you want to do:

    d = {}
    for i, tag in enumerate(ithTag):
       d[tag] = i
    
  • Try

    tagDict[ithTag] = i
    
  • Thanks!

    for i, tag in enumerate(tag): tagDict[tag] = i

    From freshWoWer
  • If you want to be clever:

    tagDict.update(enumerate(tag))
    

    Thanks to Brian for the update. This is apparently ~5% faster than the iterative version.

    Brian : Actually, update() can take a sequence directly, so there's no need to construct an intermediate dict. Doing tagDict.update(enumerate(tag)) is actually slightly (~5%) quicker than the iterative version.
    From Claudiu
  • It's a one-liner:

    tagDict = dict((tag, i) for i, tag in enumerate(tag))
    

0 comments:

Post a Comment