Python:如何按字符串的最后一个字符对列表进行排序

时间:2015-07-09 02:10:13

标签: python

我正在尝试编写一个程序,根据项目中的最后一个字符对字符串列表进行排序。

["Tiger 6", "Shark 4", "Cyborg 8"]是我的列表导入方式,但我需要根据最后的数字按数字顺序排列。

提前致谢!

4 个答案:

答案 0 :(得分:12)

  

我正在尝试编写一个程序,根据项目中的最后一个字符对字符串列表进行排序。

>>> s = ["Tiger 6", "Shark 4", "Cyborg 8"]
>>> sorted(s, key=lambda x: int(x[-1]))
['Shark 4', 'Tiger 6', 'Cyborg 8']

如果最后有多个数字,请尝试此操作。

>>> import re
>>> sorted(s, key=lambda x: int(re.search(r'\d+$',x).group()))
['Shark 4', 'Tiger 6', 'Cyborg 8']

re.search(r'\d+$',x).group()有助于获取最后出现的数字而不管前面的空格。

答案 1 :(得分:1)

如果数字不是单个数字,您可以尝试 -

>>> l = ["Tiger 6", "Shark 4", "Cyborg 8", "Temporary 12"]
>>> l.sort(key = lambda x: int(x.rsplit(' ',1)[1]))
>>> l
['Shark 4', 'Tiger 6', 'Cyborg 8', 'Temporary 12']

str.rsplit(s, n)函数开始将字符串末尾的字符串分割为字符串的开头,并在n分割后停止。在上面的例子中,它只在一个空格处分割一次字符串。

答案 2 :(得分:1)

nums = ["Tiger 6", "Shark 4", "Cyborg 8"]
slist=sorted(nums,key = lambda x:x[-1])
  1. 此处数字是列表
  2. 列表中,它从列表数字
  3. 中获取参数列表
  4. 此处lambda函数从列表中获取参数并返回其最后一个值(例如 如果它是 nums 中的第一个参数(即“ Tiger 6” ),则返回 6
  5. sorted 函数返回基于 lambda函数的列表。

答案 3 :(得分:0)

def last_letter(word):
    return word[::-1]

mylst = ["Tiger 6", "Shark 4", "Cyborg 8"]
sorted(mylst, key=last_letter)