Python:获取列表中字典项的索引

10

我有一个列表 li:

[
{name: "Tom", age: 10},
{name: "Mark", age: 5},
{name: "Pam", age: 7}
]
我想获得具有特定名称的项目的索引。 例如,如果我要求“Tom”,它应该给我:0。 “Pam”应该给我2。

我想获得具有特定名称的项目的索引。例如,如果我要求“Tom”,它应该给我:0。“ Pam”应该给我2。


1
你为什么不一开始就使用字典呢? - Keith
2个回答

27
>>> from operator import itemgetter
>>> map(itemgetter('name'), li).index('Tom')
0
>>> map(itemgetter('name'), li).index('Pam')
2
如果你需要从同一个列表中查找很多这样的内容,像Satoru.Logic的回答所做的那样创建一个字典,将会更加高效。

2
+1,我不知道这个。我一直以为这个问题太琐碎了,没有像itemgetter这样的库函数,所以总是循环遍历字典项:D - 0xc0de
在Python3中,似乎需要将map包装在列表中才能提供索引方法。 - Vincent De Smet

17

您可以通过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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接