簡體   English   中英

Python:如何根據尾隨數字對字符串進行排序?

[英]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']
  1. 創建一個 function 以刪除尾隨數字並返回字符串的其他部分。 (讓我們將此 function 視為 f_remove_trailing_digits(s) )

    def f_remove_trailing_digits(s): return s.rstrip("0123456789")

  2. 然后你可以使用這種方式排序

    list.sort(key=lambda x:f_remove_trailing_digits(x))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM