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

请求实现基于第三个key对嵌套列表按1在前0在后排序

对嵌套列表按第三个元素排序,1在前0在后

需要对如下嵌套列表a进行排序,规则是第三个元素为1的项排在前面,为0的项排在后面:

原列表:

a = [["AED",1,1],
    ["AFN",22.08086,1],
    ["ALL",27.171554,0],
    ["AMD",105.058803,1], 
    ["ANG",0.487406,0],
    ["AOA",227.493716,0],
    ["ARS",95.308373,0],
    ["AUD",0.420237,0],
    ["AWG",0.487406,0],
    ["AZN",0.462914,0],
    ["BAM",0.490727,0],
    ["BBD",0.544588,1]]

期望输出(注:原期望输出中存在重复的["AMD",105.058803,1],推测为输入笔误,以下代码输出将保持原列表元素唯一性):

a = [["AED",1,1],
    ["AFN",22.08086,1],
    ["AMD",105.058803,1],
    ["BBD",0.544588,1],
    ["ALL",27.171554,0],
    ["ANG",0.487406,0],
    ["AOA",227.493716,0],
    ["ARS",95.308373,0],
    ["AUD",0.420237,0],
    ["AWG",0.487406,0],
    ["AZN",0.462914,0],
    ["BAM",0.490727,0]]

解决方案:使用sorted()自定义排序逻辑

Python的sorted()函数支持通过key参数指定排序依据,有两种简洁的实现方式:

方式1:利用负值实现升序排序

# 直接修改原列表(原地排序)
a.sort(key=lambda x: -x[2])

# 生成新列表(不修改原列表)
sorted_a = sorted(a, key=lambda x: -x[2])

方式2:反向降序排序

# 生成新列表,稳定排序(保留同组内原顺序)
sorted_a = sorted(a, key=lambda x: x[2], reverse=True)

原理说明

  • 方式1中,lambda x: -x[2]将第三个元素取负值作为排序键:1对应-1,0对应0。升序排序时-1 < 0,因此1的项会排在前面。
  • 方式2直接按第三个元素降序排列,由于1 > 0,所有第三个元素为1的项自然排在0的项前面,且sorted()默认是稳定排序,同组内元素会保留原列表的相对顺序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 17:53:25