我有一个列表:
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)。
