Я хочу найти tuple of tuples
для конкретной строки и вернуть индекс родительского кортежа. Кажется, я часто сталкиваюсь с вариантами такого поиска.
Какой самый питонный способ сделать это?
т.е:
derp = (('Cat','Pet'),('Dog','Pet'),('Spock','Vulcan'))
i = None
for index, item in enumerate(derp):
if item[0] == 'Spock':
i = index
break
>>>print i
2
Я мог бы обобщить это в небольшую служебную функцию, которая принимает итерацию, индекс (в этом примере я жестко прописал 0
) и значение поиска. Это делает свое дело, но у меня есть представление, что, вероятно, для этого есть одна строчка;)
т.е:
def pluck(iterable, key, value):
for index, item in enumerate(iterable):
if item[key] == value:
return index
return None