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

Python中如何依据随机指定的多列对二维列表进行排序

实现方案

核心思路

把所有需要排序的列索引按优先级顺序存入一个列表,利用Python排序的key支持元组自动按优先级比较的特性实现需求,两种实现方式可选:

方式1:使用operator.itemgetter(性能更优,推荐)

from operator import itemgetter

# 你的原始数据
data = [['ABC', 12, 3, 100],
       ['DEF', 10, 5, 200],
       ['GHI', 13, 3, 1000]]

# 把所有随机生成的排序列按优先级顺序放到这个列表里,示例对应你给出的n1=2、n2=3场景
sort_columns = [2, 3]

# 按指定列优先级排序
sorted_data = sorted(data, key=itemgetter(*sort_columns))

输出结果和你给出的示例完全一致:

[['ABC', 12, 3, 100], ['GHI', 13, 3, 1000], ['DEF', 10, 5, 200]]

方式2:使用lambda表达式(无需导包)

如果不想额外导入模块,可以用lambda生成排序元组,效果完全一致:

sort_columns = [2, 3]
sorted_data = sorted(data, key=lambda x: tuple(x[col] for col in sort_columns))

补充说明

  • 不管你生成的随机排序列有多少个,只要按优先级顺序放入sort_columns列表即可,自动适配任意数量的排序维度
  • 如果需要倒序排序,给sorted方法添加reverse=True参数即可
  • 如果是要修改原列表而不是生成新的排序后列表,把sorted换成data.sort(key=...)即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:24:04