You need to enable JavaScript to run this app. 嵌套列表按末尾重复值分组筛选保留最高第二元素子列表的方法
优惠活动
大模型
产品
解决方案
定价
更多

嵌套列表按末尾重复值分组筛选保留最高第二元素子列表的方法

嵌套列表分组筛选实现方案

实现思路

借助分组映射的方式,可以在单次遍历原列表的过程中完成所有筛选操作,不需要多次循环:

  • 把每个子列表的末尾值作为分组的唯一标识
  • 遍历到同组的子列表时,对比当前条目和已存条目的第二位置数值,保留更大的那个
  • 因为原列表已经按末尾值排好序,只要按遍历顺序记录分组,最后提取结果时自然就符合示例的输出顺序

可直接复用的代码

先放置题目给出的初始输入:

List = [[1,1.5,3],[2,1,3],[4,0,3],[2,3,2],[1,4,2],[1,2,1],[1,1,1],[3,1,1]]

核心实现部分:

from collections import OrderedDict

group = OrderedDict()
for sub in List:
    key = sub[-1]
    if key in group:
        # 同组内比较第二元素,保留更大值对应的条目
        if sub[1] > group[key][1]:
            group[key] = sub
    else:
        group[key] = sub

newList = list(group.values())

运行验证:

print(newList)
# 输出结果与示例完全匹配:[[1, 1.5, 3], [1, 4, 2], [1, 2, 1]]

补充提示:Python3.7及以上版本的内置字典默认保留插入顺序,不需要额外导入OrderedDict,直接用普通字典{}就可以实现同样效果。

方案优势

  • 整体只需要一次遍历原列表,时间复杂度为O(n),处理大列表时性能远优于先全量分组再逐组找最大值的写法
  • 完全适配场景中*“第二元素无相等值、每组存在唯一最大值”*的前提,不需要写额外的并列判断逻辑
  • 因为按原列表的遍历顺序记录分组,最终结果的顺序和原列表的末尾值排序规则一致,不需要额外做结果排序

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.06 14:06:08