Найти первый элемент с алфавитным приоритетом в списке с числами

Скажем, у меня есть объект списка, занятый как числами, так и строками. Если я хочу получить первый строковый элемент с наивысшим приоритетом в алфавитном порядке, как бы я это сделал?

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

lst = [12, 4, 2, 15, 3, 'ALLIGATOR', 'BEAR', 'ANTEATER', 'DOG', 'CAT'] lst.sort() for i in lst: if i[0] == "A": answer = i print(answer) 

Сначала используйте выражение генератора, чтобы отфильтровать не строки, а затем используйте min() чтобы выбрать строку с самым высоким алфавитным присутствием:

 >>> min(x for x in lst if isinstance(x, str)) 'ALLIGATOR 

IIUC вы могли бы использовать isinstance чтобы получить подсписку из вашего исходного списка только с строками, а затем с sorted получить первый элемент по алфавитной сортировке:

 sub_lst = [i for i in lst if isinstance(i, str)] result = sorted(sub_lst)[0] print(sub_lst) ['ALLIGATOR', 'BEAR', 'ANTEATER', 'DOG', 'CAT'] print(result) 'ALLIGATOR' 

Или вы можете использовать min как @ TigerhawkT3, предложенный в комментарии:

 print(min(sub_lst)) 'ALLIGATOR' 

Другой способ – отфильтровать основной список lst от интергеров, используя встроенный filter :

 >>> min(filter(lambda s:isinstance(s, str), lst)) 'ALLIGATOR'