alw*_*btc 1 python sorting list
我有一个清单:
a = ["x", "y", "z"]
Run Code Online (Sandbox Code Playgroud)
我有另一个列表列表:
b = [["y", 99], ["w", 65], ["z", 150]]
Run Code Online (Sandbox Code Playgroud)
所以,我想a按照b降序排列的值对项目进行排序,因此排序a应该如下:
sorted_a = ["z", "y", "x"]
Run Code Online (Sandbox Code Playgroud)
这"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"]
Run Code Online (Sandbox Code Playgroud)
编辑:
为了避免在具有负数时出现错误结果,我将默认值更改为.get()to ,以-inf使不存在的元素b在排序列表中排在最后.保持tmp.get(x, 0)好像你没有负值b.