按 Python 中的多个子字符串对字符串进行排序
Sorting strings by multiple substrings in Python
我有一个文件名列表,格式如下 <number>-<number>
示例如下:
0-0
1-0
1-1
1-2
1-3
...
31-0
31-1
31-2
我想将它们作为排序列表来阅读。当我在 listdir()
输出上执行 sort()
时,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"]
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']
>>>
我有一个文件名列表,格式如下 <number>-<number>
示例如下:
0-0
1-0
1-1
1-2
1-3
...
31-0
31-1
31-2
我想将它们作为排序列表来阅读。当我在 listdir()
输出上执行 sort()
时,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"]
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']
>>>