我正在尝试编写一个程序,根据每个字符串的最后一个字符对字符串列表进行排序。
["Tiger 6", "Shark 4", "Cyborg 8"]
是我的列表,但我需要根据末尾的数字将它们按数字顺序排列。
>>> 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()
可以帮助获取字符串中最后一个数字,无论它前面是否有空格。
def last_letter(word):
return word[::-1]
mylst = ["Tiger 6", "Shark 4", "Cyborg 8"]
sorted(mylst, key=last_letter)
nums = ["Tiger 6", "Shark 4", "Cyborg 8"]
slist=sorted(nums,key = lambda x:x[-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个分割后停止。在上述情况下,它只在一个空格处分割字符串。