繁体   English   中英

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

[英]How to sort a list by last character of string

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

["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)

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

>>> 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 次拆分后停止。 在上述情况下,它只在一个空格处拆分字符串一次。

nums = ["Tiger 6", "Shark 4", "Cyborg 8"]
slist=sorted(nums,key = lambda x:x[-1])
  1. 这里nums是一个列表
  2. slist 中,它从列表nums 中获取参数列表
  3. 这里 lambda 函数从列表中获取参数并返回它的最后一个值(例如,如果它是来自nums的第一个参数(即''Tiger 6'' )并返回6
  4. 排序函数返回基于lambda 函数的列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM