2024-05-11 09:56:11 发布
网友
我试图编写一个程序,根据项目中的最后一个字符对字符串列表进行排序。
["Tiger 6", "Shark 4", "Cyborg 8"]是如何导入列表的,但我需要根据末尾的数字将它们按数字顺序排列。
["Tiger 6", "Shark 4", "Cyborg 8"]
提前谢谢!
def last_letter(word): return word[::-1] mylst = ["Tiger 6", "Shark 4", "Cyborg 8"] sorted(mylst, key=last_letter)
I am trying to write a program that orders a list of strings based on the last character in the item.
>>> 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()有助于获取最后出现的数字,而不考虑前面的空格。
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次拆分后停止。在上面的例子中,它只在一个空格处拆分字符串一次。
str.rsplit(s, n)
如果最后有更多的数字,请尝试此操作。
re.search(r'\d+$',x).group()
有助于获取最后出现的数字,而不考虑前面的空格。如果号码不是个位数,你可以尝试-
str.rsplit(s, n)
函数开始从字符串的末尾开始拆分字符串,并在n次拆分后停止。在上面的例子中,它只在一个空格处拆分字符串一次。相关问题 更多 >
编程相关推荐