2015-08-24 3 views
-1

У меня есть список что-то вроде этого:Как проверить несуществующий элемент в списке питона

l = [(1000, 'DONE'), (5, 'FAILED'), (1995, 'TO_DO')] 

The (1995, «TO_DO») двигается либо «DONE» или «FAILED» один за другим, этот процесс занимает некоторое время (скажем, около 5 минут). Я хочу продолжить проверку «TO_DO» в списке l, и когда это будет сделано, скрипт должен быть выполнен.

Итак, как только TO_DO исчезнет, ​​сценарий должен сказать - «Процесс завершен» и должен ждать, пока в списке не появится какое-либо событие «TO_DO».

Номера могут варьироваться.

+0

Я не совсем понимаю, что вы хотите сделать здесь. –

+0

вы можете быть более ясными, если вы можете добавить свой сценарий работы, который может быть более полезным. –

+0

Здесь я чувствую случай [XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). Возможно, вам захочется более подробно узнать (например, кто переупорядочивает элементы списка). Угадайте, есть лучший ответ на вашу общую проблему, чем проверка определенного элемента списка. – dhke

ответ

1

Вы можете сделать

[ e for e in l if e[1] == 'TO_DO'] 

и проверить, если результат пуст.

+0

Или 'if not next ((x для x в l, если x [1] == 'TO_DO'), None)', который позволяет избежать копирования элементов списка, если их много – dhke

0

Я не 100% уверен, что вы пытаетесь точно achive, но предположим, у вас есть скрипт или функцию, которую вы хотите выполнить whenver «TO_DO» присутствует в виде кортежа:

# If you are not using python 3 
from time import sleep 
from __future__ import print_function 

l = [(1000, 'DONE'), (5, 'FAILED'), (1995, 'TO_DO')] 
# Some example script 
script = lambda (x, y): sleep(x) if y=='TO_DO' else print('process_complete') 
map(script, l) 

Это делает следующее:

process_complete 
process_complete 
# waits for 1995 secs 

В качестве альтернативы списка понимание будет также сделать:

# If you are not using python 3 
from time import sleep 
from __future__ import print_function 
[sleep(x) if y == 'TO_DO' else print('process_complete') for x, y in l] 

Надеется, что это помогает !!

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