簡體   English   中英

如何按字母數字順序設置列表?

[英]How to set the list by alphanumerical order?

我有一個包含 10 個子文件夾的文件夾,其命名如下:

Folder1,Folder2,Folder3,... 我想按那個順序操作它們但是當我申請時

lst = os.listdir(dirname)
lst.sort()

輸出如下:

Folder1
Folder10
Folder2
Folder3
Folder4
Folder5
Folder6
Folder7
Folder8
Folder9

這是預期的,為了正確排序,我做了以下事情:

lst = os.listdir(dirname)
lst.sort()

projects = {}

for p in lst:
    pInt = re.sub(r"Folder", " ", p)
    projects[pInt] = p
    print(p)

print projects

得到以下結果:

{' 10': 'Folder10', ' 2': 'Folder2', ' 3': 'Folder3', ' 1': 'Folder1', ' 6': 'Folder6', ' 7': 'Folder7', ' 4': 'Folder4', ' 5': 'Folder5', ' 8': 'Folder8', ' 9': 'Folder9'}

我如何從那里開始正確列出它們,以便我的系統按順序一一訪問它們

您可以使用帶有自定義鍵的sorted 默認的一個是字典順序,它不適合您的目的。

>>> data
['Folder1', 'Folder10', 'Folder2', 'Folder3', 'Folder4', 'Folder5', 'Folder6', 'Folder7', 'Folder8', 'Folder9']
>>> sorted(data)
['Folder1', 'Folder10', 'Folder2', 'Folder3', 'Folder4', 'Folder5', 'Folder6', 'Folder7', 'Folder8', 'Folder9']
>>> sorted(data, key= lambda s: int(s.replace('Folder', '')))
['Folder1', 'Folder2', 'Folder3', 'Folder4', 'Folder5', 'Folder6', 'Folder7', 'Folder8', 'Folder9', 'Folder10']

如果不是每個文件夾都被稱為FolderX ,你可以使用這個鍵:

>>> sorted(data, key= lambda s: int(''.join(filter(str.isdigit, s))))
['Folder1', 'Folder2', 'Data3', 'Folder4', 'Folder5', 'Folder6', 'Folder7', 'Folder8', 'Folder9', 'Folder10']

另一種方法是將您的folderX重命名為folder0X 然后Folder02將在Folder10之前Folder10

暫無
暫無

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

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