You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于另一列表的元素顺序对元组列表进行排序

完全可以实现,根据你的数据规模可以选择两种不同的实现方案:

方案1:短列表快捷实现

如果你的参考列表l长度很小(少于100个元素),直接用sorted配合list.index即可,写法最简洁:

sorted_tuples = sorted(list_tuples, key=lambda item: l.index(item[0]))

方案2:大数据量高效实现

如果列表长度较大,反复调用list.index会带来额外的遍历开销,你可以预先构建一个元素到索引的映射字典,再用字典查询做排序key,时间复杂度更低:

# 仅遍历参考列表一次,构建排序优先级映射
order_mapping = {value: index for index, value in enumerate(l)}
# 排序时直接查询字典获取优先级,效率更高
sorted_tuples = sorted(list_tuples, key=lambda item: order_mapping[item[0]])

完整运行示例

l = ['orange', 'banana', 'apple', 'pear']
list_tuples = [('pear', 1), ('apple', 2), ('orange', 3), ('banana', 4)]

order_mapping = {v: i for i, v in enumerate(l)}
sorted_tuples = sorted(list_tuples, key=lambda x: order_mapping[x[0]])

print(sorted_tuples)
# 输出:[('orange', 3), ('banana', 4), ('apple', 2), ('pear', 1)]

输出结果完全符合你的预期。


内容的提问来源于stack exchange,提问作者pju

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 21:27:03