在python中使用多个条件对列表进行排序

Ben*_*dEg 4 python sorting lambda list

目前我正在尝试对由版本号组成的文件列表进行排序.例如:

0.0.0.0.py
1.0.0.0.py
1.1.0.0.py
Run Code Online (Sandbox Code Playgroud)

它们都存储在列表中.我的想法是sort将列表的方法与lambda表达式结合使用.lambda表达式应首先删除.py扩展,然后用点分割字符串.比将每个数字转换为整数并按它们排序.

我知道如何在c#中执行此操作,但我不知道如何使用python执行此操作.一个问题是,如何对多个标准进行排序?以及如何嵌入lambda表达式呢?

谁能帮我?

非常感谢你!

Jun*_*sor 5

你可以使用sorted函数的key参数:

filenames = [
    '1.0.0.0.py',
    '0.0.0.0.py',
    '1.1.0.0.py'
]

print sorted(filenames, key=lambda f: map(int, f.split('.')[:-1]))
Run Code Online (Sandbox Code Playgroud)

结果:

['0.0.0.0.py', '1.0.0.0.py', '1.1.0.0.py']
Run Code Online (Sandbox Code Playgroud)

lambda将文件名拆分为多个部分,删除最后一部分并将剩余的部分转换为整数.然后sorted使用此值作为排序标准.