简体   繁体   English

如何按字典顺序排序文件路径? 蟒蛇

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM