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

如何在Python中使用多键实现指定规则的列表排序?

实现指定规则的列表排序

给定待排序列表:

table = [("A", 5, 3), ("B", 5, 6), ("C", 3, 1)]

每个元组元素依次为name、points、ex,需求是先按points降序排序,points相同时按ex升序排序,用Python可以这样实现:

方法一:原地排序(修改原列表)

使用列表内置的sort()方法,直接对原列表进行排序操作:

table.sort(key=lambda x: (-x[1], x[2]))
print(table)  # 输出结果: [('A', 5, 3), ('B', 5, 6), ('C', 3, 1)]

方法二:生成新排序列表(保留原列表)

使用sorted()函数,返回一个排序后的新列表,原列表保持不变:

sorted_table = sorted(table, key=lambda x: (-x[1], x[2]))
print(sorted_table)  # 输出结果: [('A', 5, 3), ('B', 5, 6), ('C', 3, 1)]

逻辑说明

  • 核心是key=lambda x: (-x[1], x[2])这个排序规则:
    • -x[1]将points取反,让原本数值大的points在默认升序排序中排在更前面,实现降序效果;
    • 当两个元组的points相同时,会自动比较第二个排序键x[2](即ex),按默认的升序规则排序,正好满足points相同时ex升序的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 22:25:24