How to sort a list by last character of string

后端 未结 4 844
渐次进展
渐次进展 2021-02-19 13:56

I am trying to write a program that orders a list of strings based on the last character in the item.

[\"Tiger 6\", \"Shark 4\", \"Cyborg 8\"] are how my li

相关标签:
4条回答
  • 2021-02-19 14:09

    If the numbers are not single digits, you can try -

    >>> 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) function starts splitting the string at the end towards start of the string and stops after n splits. In the above case, it only splits the string once, at a space.

    0 讨论(0)
  • 2021-02-19 14:18

    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']
    

    Try this if there are more num of digits at the last.

    >>> 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() helps to fetch the number present at the last irrespective of preceding space.

    0 讨论(0)
  • 2021-02-19 14:21
    def last_letter(word):
        return word[::-1]
    
    mylst = ["Tiger 6", "Shark 4", "Cyborg 8"]
    sorted(mylst, key=last_letter)
    
    0 讨论(0)
  • 2021-02-19 14:28
    nums = ["Tiger 6", "Shark 4", "Cyborg 8"]
    slist=sorted(nums,key = lambda x:x[-1])
    
    1. here nums is an list
    2. in slist it takes list of arguments from the list nums
    3. here lambda function takes argument from list and return it's last value(e.g. if it a first argument from nums (i.e.''Tiger 6'') and it returns 6.
    4. sorted function return a list based on lambda function.
    0 讨论(0)
提交回复
热议问题