[英]Sort Python list containing both letters and numbers
我有一個列表directory_contents
包含:
['文件夾 1'、'文件夾 10'、'文件夾 11'、'文件夾 12'、'文件夾 13'、'文件夾 14'、'文件夾 15'、'文件夾 16'、'文件夾 17'、'文件夾 18' , '文件夾 19', '文件夾 2', '文件夾 20', '文件夾 21', '文件夾 22', '文件夾 23', '文件夾 24', '文件夾 25', '文件夾 26', '文件夾 27' , '文件夾 28', '文件夾 29', '文件夾 3', '文件夾 30', '文件夾 4', '文件夾 5', '文件夾 6', '文件夾 7', '文件夾 8', '文件夾 9' ]
我只需要對其進行排序,使其看起來基本上就像 windows 或任何操作系統會顯示的那樣:
所以它會是:
['文件夾 1'、'文件夾 2'、'文件夾 3'、'文件夾 4' 等等...
我嘗試了directory_contents.sort()
和directory_contents = sorted(directory_contents)
但都沒有工作。
按數字排序:
directory_contents = ['Folder 1', 'Folder 10', 'Folder 11', 'Folder 12', 'Folder 13', 'Folder 14', 'Folder 15', 'Folder 16', 'Folder 17', 'Folder 18', 'Folder 19', 'Folder 2', 'Folder 20', 'Folder 21', 'Folder 22', 'Folder 23', 'Folder 24', 'Folder 25', 'Folder 26', 'Folder 27', 'Folder 28', 'Folder 29', 'Folder 3', 'Folder 30', 'Folder 4', 'Folder 5', 'Folder 6', 'Folder 7', 'Folder 8', 'Folder 9']
directory_contents.sort(key=lambda x: int(x.strip('Folder')))
這也有點快:
timeit("""directory_contents = ['Folder 1', 'Folder 10', 'Folder 11', 'Folder 12', 'Folder 13', 'Folder 14', 'Folder 15', 'Folder 16', 'Folder 17', 'Folder 18', 'Folder 19', 'Folder 2', 'Folder 20', 'Folder 21', 'Folder 22', 'Folder 23', 'Folder 24', 'Folder 25', 'Folder 26', 'Folder 27', 'Folder 28', 'Folder 29', 'Folder 3', 'Folder 30', 'Folder 4', 'Folder 5', 'Folder 6', 'Folder 7', 'Folder 8', 'Folder 9']; directory_contents.sort(key=lambda x: int(x.strip('Folder')))""", number=1000)
0.06238140000000669
timeit("""directory_contents = ['Folder 1', 'Folder 10', 'Folder 11', 'Folder 12', 'Folder 13', 'Folder 14', 'Folder 15', 'Folder 16', 'Folder 17', 'Folder 18', 'Folder 19', 'Folder 2', 'Folder 20', 'Folder 21', 'Folder 22', 'Folder 23', 'Folder 24', 'Folder 25', 'Folder 26', 'Folder 27', 'Folder 28', 'Folder 29', 'Folder 3', 'Folder 30', 'Folder 4', 'Folder 5', 'Folder 6', 'Folder 7', 'Folder 8', 'Folder 9']; directory_contents.sort(key=lambda x:int(x.split(' ')[1]))""", number=1000)
0.08448790000001338
只需使用sort()
方法並將key
參數傳遞給它:-
directory_contents.sort(key=lambda x:int(x.split(' ')[1]))
現在,如果您打印directory_contents
,您將獲得所需的 output
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.