【问题标题】:How to order file paths in lexicographical order? Python如何按字典顺序排列文件路径? Python
【发布时间】:2019-03-12 15:08:33
【问题描述】:

我需要将文件路径列表按字典顺序排序,例如输出排序如下:

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

当我自然地对其进行排序时,我在C:\Test\Project1\Example\test1.txt 之前收到C:\Test\Project1\Example\Sub\meee.txt 并且不希望这样。

【问题讨论】:

  • 字典序是你从Python得到的,你想要的不是字典序,所以你必须设计一个自定义的排序函数。
  • 我不明白。 test1 应该在 Sub 之前的逻辑是什么? T 在字母表中不在 S 之前。

标签: python file sorting path lexicographic


【解决方案1】:

您可以将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']

【讨论】:

    猜你喜欢
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    相关资源
    最近更新 更多