[英]How to order file paths in lexicographical order? Python
I need to sort a list of file paths into lexicographic order such as the output is sorted like this: 我需要按照字典顺序对文件路径列表进行排序,例如输出按以下方式排序:
C:\Test\Project1\Example\test1.txt
C:\Test\Project1\Example\test2.txt
C:\Test\Project1\Example\Sub\meee.txt
C:\Test\Project1\Example\Sub\test1.txt
C:\Test\Project1\Example\Sub\youu.txt
C:\Test\Project1\Example\Zzz\zzz.py
When I sort it naturally I receive C:\\Test\\Project1\\Example\\Sub\\meee.txt
before C:\\Test\\Project1\\Example\\test1.txt
and do not want that. 当我自然排序时,在C:\\Test\\Project1\\Example\\test1.txt
之前会收到C:\\Test\\Project1\\Example\\Sub\\meee.txt
,但不要这样。
You can use sorted
with a custom key which gives priority to files in the root directory: 您可以使用带有自定义键的sorted
,该键为根目录中的文件赋予优先级:
L = [r'C:\Test\Project1\Example\test1.txt', r'C:\Test\Project1\Example\test2.txt',
r'C:\Test\Project1\Example\Sub\meee.txt', r'C:\Test\Project1\Example\Sub\test1.txt',
r'C:\Test\Project1\Example\Sub\youu.txt', r'C:\Test\Project1\Example\Zzz\zzz.py']
def sort_key(x):
splits = x.split('\\')[4:]
return len(splits), splits
res = sorted(L, key=sort_key)
['C:\\Test\\Project1\\Example\\test1.txt',
'C:\\Test\\Project1\\Example\\test2.txt',
'C:\\Test\\Project1\\Example\\Sub\\meee.txt',
'C:\\Test\\Project1\\Example\\Sub\\test1.txt',
'C:\\Test\\Project1\\Example\\Sub\\youu.txt',
'C:\\Test\\Project1\\Example\\Zzz\\zzz.py']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.