这个问题在这里已有答案:
我试图解决这个字符串列表的排序问题。
所有字符串都以字母数字标识符开头,在字母数字标识符之后,字符串将由字或整数组成。
输出列表需要遵循以下规则进行组织:
例
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])
您可以将sorted
函数与key函数一起使用,该函数根据最后一个字符是否为数字返回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']