1. 程式人生 > 其它 >Python 檔名排序(排了sorted排不了的正是我natsorted噠!)

Python 檔名排序(排了sorted排不了的正是我natsorted噠!)

Python 檔名排序

使用natsort包的natsorted方法

from natsort import natsorted

官方說明中有提到

natsort provides a function natsorted that helps sort lists “naturally” (“naturally” is rather ill-defined, but in general it means sorting based on meaning and not computer code point).
natsort 提供一個 natsorted 函式,這個函式可以自然的排列列表(“自然”的定義是不明確的,但是他會根據一定的含義進行排序,而不只是根據計算機程式碼)

>> from natsort import natsorted
>> a = ['2 ft 7 in', '1 ft 5 in', '10 ft 2 in', '2 ft 11 in', '7 ft 6 in']
>> natsorted(a)
['1 ft 5 in', '2 ft 7 in', '2 ft 11 in', '7 ft 6 in', '10 ft 2 in']

Note: natsorted is designed to be a drop-in replacement for the built-in sorted function. Like sorted, natsorted does not sort in-place. To sort a list and assign the output to the same variable, you must explicitly assign the output to a variable


注意:natsorted 被設計為內建 sorted 函式的替代品。像 sorted 一樣,natsorted 不會就地排序。要對列表進行排序並將輸出分配給同一個變數,您必須將輸出顯式分配給一個變數

>> a = ['2 ft 7 in', '1 ft 5 in', '10 ft 2 in', '2 ft 11 in', '7 ft 6 in']
>> natsorted(a)
['1 ft 5 in', '2 ft 7 in', '2 ft 11 in', '7 ft 6 in', '10 ft 2 in']
>> print(a)  # 'a'並沒有被排序;"natsorted"只是簡單的返回了一個列表
['2 ft 7 in', '1 ft 5 in', '10 ft 2 in', '2 ft 11 in', '7 ft 6 in']
>> a = natsorted(a)  # 現在'a'將會被排序,因為將排序過的'a'賦值給了'a'
>> print(a)
['1 ft 5 in', '2 ft 7 in', '2 ft 11 in', '7 ft 6 in', '10 ft 2 in']