Вы должны использовать any(..)
здесь:
if any(myString == sublist[1] for sublist in lst):
# ... do something
pass
для итерируемого словаря, он точно такой же, за исключением того, что ключ может быть нецелым, как:
if any(myString == subdict[some_key] for subdict in lst):
# ... do something
pass
Здесь мы, таким образом, перебираем sublist
s в lst
. Если для одного из sublist
s, myString == sublist[1]
, это будет успешно, в противном случае произойдет сбой.
Таким образом, здесь мы используем генератор. any(..)
остановится с того момента, как найдет элемент True
. Это, однако, все еще работает в линейном времени (наихудший случай).
РЕДАКТИРОВАТЬ : Мы можем получить первый индекс с помощью:
idx = next((idx for idx, sublist in enumerate(lst) if myString == sublist[1]), None)
это вернет None
, если такого индекса нет.
или мы можем получить все индексы с пониманием списка:
idcs = [idx for idx, sublist in enumerate(lst) if myString == sublist[1]]