如何按照长参考列表的顺序对短列表进行排序
列表按指定参考顺序排序的实现方案(Python环境)
核心思路是提前为参考列表的所有元素绑定对应的位置权重,排序时直接调用权重值作为排序依据,单次查询效率为O(1),整体排序效率更高。
具体实现步骤
- 第一步:构建参考列表的元素-索引映射字典
A = ['X_0', 'Z_0', 'X_1', 'Y_0', 'Z_1', 'X_2', 'Y_1', 'Z_2', 'Y_2'] order_map = {val: idx for idx, val in enumerate(A)}
- 第二步:用映射的索引作为key对B排序
B = ['Z_0', 'X_1', 'X_0'] B_final = sorted(B, key=lambda x: order_map[x])
输出验证
运行后输出的B_final结果和预期一致:
['X_0', 'Z_0', 'X_1']
兼容异常场景的写法
如果B中可能存在A没有的元素,可以给key设置默认值,将异常元素统一放到排序结果末尾:
B_final = sorted(B, key=lambda x: order_map.get(x, len(A)))
内容的提问来源于stack exchange,提问作者Astrid
相关产品推荐
相关产品推荐

