Python找到多值List的索引?

时间:2014-10-30 18:56:14

标签: python list indexing

我无法在任何地方看到答案,但我知道这是一个愚蠢的问题,所以提前抱歉!!

我有一个这样的清单:

fullList = [("a","/a/"),("b","/b/"),("c","/c/"),("d","/d/"),("e","/e/")]

如果我有值,请说c然后我如何得到它的数组索引?

如果我使用索引方法它不起作用:

listIndex = fullList.index('c')

有什么想法吗?

欢呼并抱歉,如果这是一个非常愚蠢的问题...

3 个答案:

答案 0 :(得分:3)

你只需要一个列表理解并使用in操作:

>>> [fullList.index(i) for i in fullList if 'c' in i]
[2]

如果您只想检查第一个索引,可以使用:

>>> [fullList.index(i) for i in fullList if i[0]=='c']
[2]

另请注意,您可以在列表推导中使用enumerate功能,这些功能在此处具有更高的效果(index()的顺序为O(n)),您可以拒绝额外搜索!< / p>

>>> [i for i,j in enumerate(fullList) if j[0]=='c']
[2]

>>> [i for i,j in enumerate(fullList) if 'c' in j]
[2]

答案 1 :(得分:1)

列表的索引()查找列表元素的相等性,因此您希望提供与您要查找的项目相等的项目。具体来说,在这种情况下,它将是:

listIndex = fullList.index(('c', '/c/'))

如果你真的需要通过元组的第一个元素进行搜索,你可以只获取每个项目的第一个元素并对其执行.index:

listIndex = [ e[0] for e in fullList ].index('c')

答案 2 :(得分:0)

您需要索引还是全部值?在第二种情况下:

>>> found = dict(fullList).get('c')
>>> print found
("c", "/c/")