我无法在任何地方看到答案,但我知道这是一个愚蠢的问题,所以提前抱歉!!
我有一个这样的清单:
fullList = [("a","/a/"),("b","/b/"),("c","/c/"),("d","/d/"),("e","/e/")]
如果我有值,请说c然后我如何得到它的数组索引?
如果我使用索引方法它不起作用:
listIndex = fullList.index('c')
有什么想法吗?
欢呼并抱歉,如果这是一个非常愚蠢的问题...
答案 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/")