Omk*_*kar 1 python sorting list
我有这种格式的列表:
a = ["1.mp4", "10.mp4", "100.mp4", "2.mp4", "20.mp4", "200.mp4"]
Run Code Online (Sandbox Code Playgroud)
我必须按升序对上面的列表进行排序.
我的代码:
def ascend(a):
a.sort()
return a
a = ["1.mp4", "10.mp4", "100.mp4", "2.mp4", "20.mp4", "200.mp4"]
print(ascend(a))
Run Code Online (Sandbox Code Playgroud)
我的输出:
['1.mp4', '10.mp4', '100.mp4', '2.mp4', '20.mp4', '200.mp4']
Run Code Online (Sandbox Code Playgroud)
而实际的输出应该是
['1.mp4', '2.mp4', '10.mp4', '20.mp4', '100.mp4', '200.mp4']
Run Code Online (Sandbox Code Playgroud)
问题是它是按字典顺序排序而不是数字排序所以'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']
Run Code Online (Sandbox Code Playgroud)
该key参数接受一个函数,该函数处理每个元素a.我们告诉Python通过首先删除.mp4字符串,然后将字符串转换为整数,并按数字排序来对每个元素进行排序.