Этот код возвращает True

a = [('e', 4), ('r', 2), (' ', 2), ('h', 2), ('A', 1), ('t', 1), ('y', 1)]
print(('e', 4) in a) # True

И если я не знаю номер рядом с 'e', ​​как мне проверить, есть ли эта буква в списке

print(('e',) in a) # False
4
Mark juzefin 19 Янв 2021 в 14:03

3 ответа

Лучший ответ

Вам нужно перебрать поиск.

Проверьте, есть ли в каком-либо из кортежей в списке первый член как 'e'

a = [('e', 4), ('r', 2), (' ', 2), ('h', 2), ('A', 1), ('t', 1), ('y', 1)]

print(any(tup[0] == 'e' for tup in a))

Который дает:

True
3
rdas 19 Янв 2021 в 11:05

Используйте понимание списка, чтобы получить первые компоненты каждого кортежа. . Затем проверьте, присутствует ли e в итоговом списке, используя существующий подход.

a = [('e', 4), ('r', 2), (' ', 2), ('h', 2), ('A', 1), ('t', 1), ('y', 1)]
print('e' in [e[0] for e in a])
# True
1
costaparas 19 Янв 2021 в 11:07

Вы можете сначала преобразовать list в dict:

a = [('e', 4), ('r', 2), (' ', 2), ('h', 2), ('A', 1), ('t', 1), ('y', 1)]
b = dict(a)

print(('e', 4) in a)

print('e' in b)

Дважды выводит True.

Этот код использует преимущество dict, которое напрямую принимает list из tuples и превращает первый элемент каждого tuple в ключи. Затем вы можете быстро найти ключи полученного dict.

2
quamrana 19 Янв 2021 в 11:09