基于字符串内容对字符串列表排序

2024-06-26 00:20:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图解决字符串列表的排序问题。你知道吗

所有字符串都以字母数字标识符开头,字母数字标识符之后的字符串将由单词或整数组成。你知道吗

输出列表需要按照以下规则组织:

  • 带单词的字符串必须位于列表的开头
  • 带单词的字符串按字典顺序排列,忽略标识符
  • 带整数的字符串必须保持原始顺序
  • 标识符必须是输出字符串的一部分

示例

list = ['a1 9 2 3 1', 'g1 act car', 'zo4 4 7', 'ab1 off key dog', 'a8 act zoo']

reordered_list = [ 'g1 act car', 'a8 act zoo', 'ab1 off key dog', 'a1 9 2 3 1', 'zo4 4 7']

我试图使用lambda函数按第二个值对字符串进行拆分,但是输出是None

list.sort(key = lambda x: x.split()[1])


Tags: key字符串列表a1字母数字整数标识符
1条回答
网友
1楼 · 发布于 2024-06-26 00:20:44

可以将sorted函数与键函数一起使用,键函数根据最后一个字符是否是数字(因为它可能表示是否是带整数的字符串)返回1或2个元组,通过给单词字符串的元组的第一项赋予较小的数字,将单词字符串优先于整数字符串:

sorted(l, key=lambda s: (1,) if s[-1].isdigit() else (0, s.split(' ', 1)[1]))

这将返回:

['g1 act car', 'a8 act zoo', 'ab1 off key dog', 'a1 9 2 3 1', 'zo4 4 7']

相关问题 更多 >