Python - 排序列表

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)

Ter*_*ryA 8

问题是它是按字典顺序排序而不是数字排序所以'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字符串,然后将字符串转换为整数,并按数字排序来对每个元素进行排序.