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

如何按第二个元素降序、第三个元素升序排序嵌套列表?

Python嵌套列表按指定规则排序

要实现按子列表第二个元素取最大值优先、第三个元素取最小值优先的排序,可以利用Python内置的sorted()函数或列表的sort()方法,通过自定义排序键来实现:

方法1:使用sorted()函数(返回新列表)

l = [
    ["I", 2, 3],
    ["You", 3, 2],
]

# 自定义排序键:第二个元素取负(实现降序),第三个元素直接取(实现升序)
sorted_list = sorted(l, key=lambda x: (-x[1], x[2]))
print(sorted_list)
# 输出结果:[['You', 3, 2], ['I', 2, 3]]

方法2:使用sort()方法(原地修改列表)

如果不需要保留原列表,可以直接用列表的sort()方法进行原地排序:

l = [
    ["I", 2, 3],
    ["You", 3, 2],
]

l.sort(key=lambda x: (-x[1], x[2]))
print(l)
# 输出结果:[['You', 3, 2], ['I', 2, 3]]

原理说明

排序键lambda x: (-x[1], x[2])的作用:

  • -x[1]:将子列表的第二个元素取负数,这样sorted()默认的升序排序会把原数值更大的元素排在前面,实现第二个元素降序(最大值优先)。
  • x[2]:当两个子列表的第二个元素相同时,会按照第三个元素的升序排列,实现第三个元素最小值优先。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:24:31