[英]Python: How to sort strings with regards to their trailing numbers?
用尾隨數字對字符串列表進行排序的最佳方法是什么
>>> list = ['mba23m23', 'mba23m124', 'mba23m1', 'mba23m5']
>>> list.sort()
>>> print list
['mba23m1', 'mba23m124', 'mba23m23', 'mba23m5']
有沒有辦法讓它們排序為
['mba23m1', 'mba23m5', 'mba23m23', 'mba23m124']
你可以使用 natsort 庫。
from natsort import natsorted # pip install natsort
list = ['mba23m23', 'mba23m124', 'mba23m1', 'mba23m5']
output:
['mba23m1', 'mba23m5', 'mba23m23', 'mba23m124']
使用 lambda (匿名) function 和sort()
的key
參數:
ls = ['mba23m23', 'mba23m124', 'mba23m1', 'mba23m5']
ls.sort(key=lambda x: int(x.split('m')[-1]))
print(ls)
產量:
['mba23m1', 'mba23m5', 'mba23m23', 'mba23m124']
創建一個 function 以刪除尾隨數字並返回字符串的其他部分。 (讓我們將此 function 視為 f_remove_trailing_digits(s) )
def f_remove_trailing_digits(s): return s.rstrip("0123456789")
然后你可以使用這種方式排序
list.sort(key=lambda x:f_remove_trailing_digits(x))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.