Python: Get index of dictionary item in list

27,003

Solution 1

>>> from operator import itemgetter
>>> map(itemgetter('name'), li).index('Tom')
0
>>> map(itemgetter('name'), li).index('Pam')
2

If you need to look up a lot of these from the same list, creating a dict as done in Satoru.Logic's answer, is going to be a lot more efficent

Solution 2

You may index the dicts by name

people = [ {'name': "Tom", 'age': 10}, {'name': "Mark", 'age': 5} ]
name_indexer = dict((p['name'], i) for i, p in enumerate(people))
name_indexer.get('Tom', -1)
Share:
27,003

Related videos on Youtube

dkgirl
Author by

dkgirl

Updated on January 02, 2020

Comments

  • dkgirl
    dkgirl over 4 years

    I have a list li:

    [
    {name: "Tom", age: 10},
    {name: "Mark", age: 5},
    {name: "Pam", age: 7}
    ]
    

    I want to get the index of the item that has a certain name. For example, if I ask for "Tom" it should give me: 0. "Pam" should give me 2.

    • Keith
      Keith over 13 years
      Any reason you don't just use a dictionary to begin with?
  • 0xc0de
    0xc0de over 12 years
    +1, I didn't know this. I had assumed that this problem is too trivial to have a library function like itemgetter and always looped over the dict items :D
  • Vincent De Smet
    Vincent De Smet almost 7 years
    in python3 it seems the map needs to be wrapped in a list to provide the index method