我正在尝试解决字符串列表的排序问题。
所有字符串都以字母数字标识符开头,在字母数字标识符之后,字符串将由单词或整数组成。
需要按照以下规则组织输出列表:
示例
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])
答案 0 :(得分:0)
您可以将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']