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

Python 如何按字符串的最后一个字符对列表排序,python,string,list,sorting,Python,String,List,Sorting,我正在尝试编写一个程序,根据项目中的最后一个字符对字符串列表进行排序 [“老虎6”、“鲨鱼4”、“电子人8”]是如何导入我的列表的,但我需要根据最后的数字将它们按数字顺序排列 我正在尝试编写一个程序,根据项目中的最后一个字符对字符串列表进行排序 如果最后一个数字的数量更多,请尝试此操作 >>> import re >>> sorted(s, key=lambda x: int(re.search(r'\d+$',x).group())) ['Shark 4',

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

[“老虎6”、“鲨鱼4”、“电子人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次后停止。在上述情况下,它只在一个空格处拆分字符串一次

def last_letter(word):
    return word[::-1]

mylst = ["Tiger 6", "Shark 4", "Cyborg 8"]
sorted(mylst, key=last_letter)
  • 这里nums是一个列表
  • slist中,它从列表nums中获取参数列表
  • 这里lambda函数从列表中获取参数并返回它的最后一个值(例如。 如果它是来自nums(即“Tiger 6”)的第一个参数,则返回 6
  • 排序的函数返回基于lambda函数的列表

  • 数字总是个位数吗?在这种情况下,是的。为什么使用lambda作为键而不是函数。lambda用于创建匿名函数。如果可能,请努力提供额外的解释,而不仅仅是代码。这些答案往往更有用,因为它们可以帮助社区成员,特别是新开发人员s更好地理解解决方案的推理,并有助于避免需要解决后续问题。
    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])