2

我有以下格式的文件名列表<number>-<number>

下面的例子:

0-0
1-0
1-1
1-2
1-3

...

31-0
31-1
31-2

我想将它们作为排序列表阅读。当我sort()listdir()输出上做时,10-x 就在1-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"]

4

1 回答 1

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']
>>> 
于 2020-09-17T12:16:33.210 回答