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

Python中如何按第1列升序排序2D列表,同值时优先按第0列排序

实现多优先级排序的方案

你要的需求可以直接通过给排序key指定多维度规则实现,有两种常用写法:

写法1:使用itemgetter传多参数

直接给itemgetter按优先级顺序传入对应的列索引即可:

from operator import itemgetter
arr = [[1,2],[3,4],[0,6],[5,7],[8,9],[5,9]]
# 第一优先级按索引1列升序,第二优先级按索引0列升序
arr = sorted(arr, key=itemgetter(1, 0))
print(arr)

运行输出:

[[1, 2], [3, 4], [0, 6], [5, 7], [5, 9], [8, 9]]

写法2:用lambda自定义key(无需引入额外模块)

如果不想导入operator模块,也可以直接用lambda构造排序规则元组:

arr = [[1,2],[3,4],[0,6],[5,7],[8,9],[5,9]]
arr = sorted(arr, key=lambda x: (x[1], x[0]))
print(arr)

两种写法效果完全一致。

原理解释

Python的sorted函数会自动对元组类型的key按元素顺序依次比较:先比较元组第一个元素,相等时再比较第二个,以此类推。你之前只传入了单维度的itemgetter(1),所以第一优先级值相等时会默认保留原列表的相对顺序(Python内置排序是稳定排序),补充第二维度排序规则后就可以满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:15:03