2014-10-30 2 views
0

Я не вижу ответа для этого нигде, но я знаю, что это глупый вопрос, так что извините заранее!Python найти индекс многозначного списка?

У меня есть список, как это:

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

Если у меня есть значение, позволяет говорить с, то как я могу получить его индекс для массива?

Если я использую метод индекса это не работает:

listIndex = fullList.index('c') 

Любые идеи?

Приветствия и жаль, если действительно глупый вопрос ...

+0

Если я не знаю, что вторая часть,/c /? – mcquaim

+0

mcquaim, см. Мое редактирование на мой ответ. Он строит список первых частей кортежей и совпадает с ними. – Zardus

ответ

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

+0

Спасибо за помощь всем, отсортированным сейчас! – mcquaim

1

индекс список (в) ищет равенства на элементах списка, так что вы хотите, чтобы обеспечить элемент, который равен то, что вы ищете. В частности, в этом случае было бы:

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

Если вам действительно нужно искать по первому элементу кортежа, вы можете захватить только первый из каждого пункта и не .index на что:

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

Да, редактирование тоже хорошо работает !! – mcquaim

-1

Вам нужен индекс или полное значение? Во втором случае:

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

Не знаю, кто имеет нисходящие разумные ответы и почему ... –

Смежные вопросы