Skip to main content
 首页 » 编程设计

Python之排序列表

2025年05月04日8think

我有一个这种格式的列表:

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 来对每个元素进行排序。的字符串,然后将字符串转换为整数,并按数字排序。