在带有数字的列表中查找具有字母优先级的第一项



假设我有一个同时被数字和字符串占用的列表对象。如果我想检索具有最高字母优先级的第一个字符串项,我将如何操作?

这是一个明显不正确的示例尝试,但对于需要更改的内容以达到预期结果的更正将不胜感激:

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'

最新更新