问题描述
以下示例:
0-0
1-0
1-1
1-2
1-3
...
31-0
31-1
31-2
我想将它们作为排序列表阅读。当我在sort()
输出上执行listdir()
时,在1-x
系列之后紧接着是10-x。
当我执行.sort(key=lambda x: int(x.split('-')[0]))
时,得到的第一个数字已排序,但第二个数字(连字符后的那个未排序)。示例:["21-3","21-0","21-2","21-1"]
因此,如何确保我可以读取文件名,文件名按文件名中的连字符开头,而也按文件名中的第二个数字排序(连字符后的第一个)?
所需的输出:
["0-0","1-0","1-1","1-2",... "31-0","31-1","31-2","31-3"]
解决方法
items = ["31-1","31-0","0-0","0-2","0-1"]
print(sorted(items,key=lambda s: tuple(map(int,s.split("-")))))
输出:
['0-0','0-1','0-2','31-0','31-1']
>>>