2014-10-30 48 views
0

我无法在任何地方看到答案,但我知道这是一个愚蠢的问题,所以提前抱歉!Python找到一个多值列表的索引?

我有一个这样的名单:

fullList = [("a","https://stackoverflow.com/a/"),("b","/b/"),("c","/c/"),("d","/d/"),("e","/e/")] 

如果我的价值,可以说C,然后我怎么得到它的指数为数组?

如果我用指数法它不工作:

listIndex = fullList.index('c') 

任何想法?

干杯,如果真是愚蠢的问题抱歉...

+0

如果我不知道第二部分是什么,/ c /? – mcquaim 2014-10-30 19:00:38

+0

mcquaim,看我的编辑到我的答案。它建立了元组的第一部分和匹配的列表。 – Zardus 2014-10-30 19:08:28

回答

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))你可以拒绝额外的搜索!

>>> [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

谢谢,工作一种享受... – mcquaim 2014-10-30 19:19:02

+0

感谢所有帮助大家,现在排序! – mcquaim 2014-10-30 19:26:53

1

列表中的索引()查找该列表的元素平等的,所以你要提供的项目,等于你在找什么。具体而言,在这种情况下,这将是:

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

如果你真的需要由元组的第一个元素进行搜索,您可以抓取只是每个项目中的第一个,做对的.index:

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

是的,编辑工作得很好! – mcquaim 2014-10-30 19:26:29

-1

您是否需要索引或完整值?在第二种情况:

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

不知道谁是downvoting明智的答案,也不是为什么... – 2014-10-30 19:01:09

相关问题