Skip to main content
 首页 » 编程设计

python之如何根据python中的列表列表对列表进行排序

2025年05月04日10oomusou

我有一个列表:

a = ["x", "y", "z"] 

我有另一个列表列表:

b = [["y", 99], ["w", 65], ["z", 150]] 

所以,我想根据 b 中的值降序对 a 中的项目进行排序,因此排序后的 a 应该看起来像:

sorted_a = ["z", "y", "x"] 

这里 "x" 在最后,因为它在 b 中没有值。

我想知道实现此目标的最快方法,因为我的实际列表很大。

请您参考如下方法:

可以将b转换为字典,以dict.get()为键排序,默认值为0,例如:

a = ["x", "y", "z"] 
b = [["y", 99], ["w", 65], ["z", 150]] 
 
lowest = float('-inf') 
tmp = dict(b) 
sorted_a = sorted(a, key=lambda x: tmp.get(x, lowest), reverse=True) 
# sorted_a = ["z", "y", "x"] 

编辑:

为了避免出现负数时的错误结果,我将 .get() 的默认值更改为 -inf 以便 中不存在的元素>b 在排序列表中排在最后。如果 b 中没有负值,请将其保留为 tmp.get(x, 0)。