我有一个包含 10 个子文件夹的文件夹,其命名如下:
文件夹1,文件夹2,文件夹3,... 我想按该顺序操作它们,但是当我申请时
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
之前。
关于python - 如何按字母数字顺序设置列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46560399/