Как искать список кортежей в Python

Таким образом, у меня есть список кортежей, таких как это:

[(1,"juca"),(22,"james"),(53,"xuxa"),(44,"delicia")]

Я хочу этот список для кортежа, числовое значение которого равно чему-то.

Так, чтобы, если я делаю search(53) это возвратит индексное значение 2

Существует ли простой способ сделать это?

88
задан Donnied 10 April 2013 в 20:52
поделиться

4 ответа

[i for i, v in enumerate(L) if v[0] == 53]
86
ответ дан 24 November 2019 в 07:28
поделиться

Хм ... ну, простой способ, который приходит на ум, - это преобразовать его в dict

d = dict(thelist)

и получить доступ к d [53] .

РЕДАКТИРОВАТЬ : Ой, неправильно прочитал свой вопрос в первый раз. Похоже, вы действительно хотите получить индекс, в котором хранится данное число. В этом случае попробуйте

dict((t[0], i) for i, t in enumerate(thelist))

вместо простого старого преобразования dict . Тогда d [53] будет 2.

12
ответ дан 24 November 2019 в 07:28
поделиться

Вы можете использовать осмысление списка:

>>> a = [(1,"juca"),(22,"james"),(53,"xuxa"),(44,"delicia")]
>>> [x[0] for x in a]
[1, 22, 53, 44]
>>> [x[0] for x in a].index(53)
2
48
ответ дан 24 November 2019 в 07:28
поделиться

Ваши кортежи в основном являются парами ключ-значение -- python dict-- так:

l = [(1,"juca"),(22,"james"),(53,"xuxa"),(44,"delicia")]
val = dict(l)[53]

Edit -- ага, вы говорите, что вам нужно значение индекса (53, "xuxa"). Если это действительно то, что вам нужно, вам придется просмотреть исходный список или, возможно, составить более сложный словарь:

d = dict((n,i) for (i,n) in enumerate(e[0] for e in l))
idx = d[53]
26
ответ дан 24 November 2019 в 07:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: