Searching in nested sequences like a
tuple requires an approach like searching the keys for values in
dict but needs customized functions.
The index of the outermost sequence if the value was found in the sequence:
def outer_index(nested_sequence, value): return next(index for index, inner in enumerate(nested_sequence) for item in inner if item == value) alist_of_tuples = [(4, 5, 6), (3, 1, 'a'), (7, 0, 4.3)] outer_index(alist_of_tuples, 'a') # 1 outer_index(alist_of_tuples, 4.3) # 2
or the index of the outer and inner sequence:
def outer_inner_index(nested_sequence, value): return next((oindex, iindex) for oindex, inner in enumerate(nested_sequence) for iindex, item in enumerate(inner) if item == value) outer_inner_index(alist_of_tuples, 'a') # (1, 2) alist_of_tuples # 'a' outer_inner_index(alist_of_tuples, 7) # (2, 0) alist_of_tuples # 7
In general (not always) using
next and a generator expression with conditions to find the first occurrence of the searched value is the most efficient approach.