我有一个这种格式的列表:
a = ["1.mp4", "10.mp4", "100.mp4", "2.mp4", "20.mp4", "200.mp4"]
我必须按升序对上面的列表进行排序。
我的代码:
def ascend(a):
a.sort()
return a
a = ["1.mp4", "10.mp4", "100.mp4", "2.mp4", "20.mp4", "200.mp4"]
print(ascend(a))
我的输出:
['1.mp4', '10.mp4', '100.mp4', '2.mp4', '20.mp4', '200.mp4']
实际输出应该是
['1.mp4', '2.mp4', '10.mp4', '20.mp4', '100.mp4', '200.mp4']
请您参考如下方法:
问题是它是按字典顺序排序而不是数字排序所以 '10' < '2'在这种情况下。添加排序键:
>>> a = ["1.mp4", "10.mp4", "100.mp4", "2.mp4", "20.mp4", "200.mp4"]
>>> sorted(a, key=lambda x: int(x[:-4]))
['1.mp4', '2.mp4', '10.mp4', '20.mp4', '100.mp4', '200.mp4']
key parameter 接受一个函数,处理 a 的每个元素.我们告诉 Python 通过首先删除 .mp4 来对每个元素进行排序。的字符串,然后将字符串转换为整数,并按数字排序。
