2017-02-02 1 views
0

У меня есть список кортежей, структурированных в соответствии с ниже (данные только в качестве примера):Поиск элемента в списке кортежей

[('aaa', 10), ('bbb', 10), ('ccc', 12), ('ddd', 12), ('eee', 14)] 

мне нужно искать второй элемент в каждой из кортежей (номер), чтобы увидеть, если он существует в списке (например, поиск 12 = найдено, поиск 5 = не найден

в настоящее время я использую ниже, который работает, но не может быть лучшим способом в Python:.

not_there = True 
for a in final_set: 
    if final_set[1] == episode_id: 
     not_there = False 
     break 

Что является лучшим/самый эффективный способ в Python для этого?

+0

вы можете сделать 'episode_id в [a для _, a в final_set]' или 'any (a == episode_id for _, a в final_set)' (также код, который вы написали, не работает, потому что вы сравниваете 'final_set [1] 'вместо' a [1] ') – njzk2

+0

Да, спасибо, я только что увидел, что после того, как я разместил его :). Я попробую ваше предложение, спасибо. – WazzalJohn

+0

Привет, этот код работает независимо от того, ищу ли я элемент 1 в кортеже («aaa») или элемент 2 (число)? – WazzalJohn

ответ

0

Может быть, вы можете попробовать что-то вроде этого:

test = [('aaa', 10), ('bbb', 10), ('ccc', 12), ('ddd', 12), ('eee', 14)] 
number = 10 

for i in test: 
    if number in i: 
    print("Number {} found.".format(number)) 
    else: 
    print("Number {} not found".format(number)) 

Это должно работать независимо вы ищете элемент 1 в кортеже (в «AAA») или элемент 2 (число).

Надеюсь, это поможет.

+0

Спасибо Boky - я пробовал это, и он действительно работает, но я пытаюсь настроить поиск определенного элемента в кортеже. – WazzalJohn

0

Что об этом:

is_there = (len([item for item in final_set if item[1] == episode_id]) > 0)

В принципе, [item for item in final_set if item[1] == episode_id] является понимание выражения списка, который создает список элементов в final_set таких, что item[1] == episode_id.

Затем вы можете проверить длину результирующего списка: если оно больше 0, чем что-то найдено.