我正在尝试编写一个程序,根据项目中的最后一个字符对字符串列表进行排序。
["Tiger 6", "Shark 4", "Cyborg 8"]
是我的列表导入方式,但我需要根据最后的数字按数字顺序排列。
提前致谢!
答案 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])
答案 3 :(得分:0)
def last_letter(word):
return word[::-1]
mylst = ["Tiger 6", "Shark 4", "Cyborg 8"]
sorted(mylst, key=last_letter)