【发布时间】:2015-09-27 04:57:38
【问题描述】:
我正在尝试编写一个程序,该程序根据项目中的最后一个字符对字符串列表进行排序。
["Tiger 6", "Shark 4", "Cyborg 8"] 是我的列表的导入方式,但我需要根据末尾的数字将它们按数字顺序排列。
【问题讨论】:
-
数字总是个位数吗?
-
在这种情况下,是的。
标签: python string list sorting
我正在尝试编写一个程序,该程序根据项目中的最后一个字符对字符串列表进行排序。
["Tiger 6", "Shark 4", "Cyborg 8"] 是我的列表的导入方式,但我需要根据末尾的数字将它们按数字顺序排列。
【问题讨论】:
标签: python string list sorting
nums = ["Tiger 6", "Shark 4", "Cyborg 8"]
slist=sorted(nums,key = lambda x:x[-1])
【讨论】:
def last_letter(word):
return word[::-1]
mylst = ["Tiger 6", "Shark 4", "Cyborg 8"]
sorted(mylst, key=last_letter)
【讨论】:
我正在尝试编写一个程序,该程序根据项目中的最后一个字符对字符串列表进行排序。
>>> 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() 有助于获取最后出现的数字,而不考虑前面的空格。
【讨论】:
如果数字不是个位数,可以试试-
>>> 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 次拆分后停止。在上述情况下,它只在一个空格处拆分字符串一次。
【讨论】: