簡體   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