получение индекса данного компонента в списке кортежей

#python #indexing #tuples

Вопрос:

Итак, я хочу получить индекс компонента в списке кортежей, который имеет заданное значение. Вот пример того, что я сделал до сих пор:

импорт случайных

кортежи=[(‘a’, 1.09), (‘b’, 5.89), (‘c’, 6.85), (‘d’, 9.48)]

x = случайный выбор(кортежи)[0]

Здесь я случайным образом возвращаю a,b,c или d(x). Теперь я хочу найти индекс компонента, содержащего x, в списке «кортежи».

Надеюсь, вы понимаете мою точку зрения!

Ответ №1:

Этого должно хватить:

 index_of_element = [i for i, t in enumerate(tuples) if t[0] == x][0]  

Используя enumerate, вы выполняете итерацию tuples , создавая кортеж элементов for и соответствующий ему индекс. пример: (0, («a», 1.08))

Затем, используя if понимание внутри списка, вы фильтруете элементы по значению x для первого элемента t[0] текущего примера кортежа

Это дает вам массив с элементом, который вы ищете. Наконец [0] -то дает вам этот элемент.

Вы можете проверить, не пуст ли список, на случай, если вы его не найдете.

Ответ №2:

Вы можете использовать понимание списка enumerate , чтобы определить, какой индекс соответствует искомому значению.

 indexes = [i for i,v in enumerate(tuples) if v[0] == x]  

если индекс существует и уникален, вы можете получить первый элемент: indexes[0]

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

 index = random.randint(0, len(tuples)) values = tuples[index][0]