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

Python嵌套列表按前两个元素分组取第四个元素最大值的实现

代码问题排查

你写的代码存在以下几个核心问题:

  • 遍历列表finallist的同时执行remove操作,会导致列表索引动态变化,大量元素被跳过未处理
  • maxlist没有按分组清空,所有分组的第四个元素都会被存入,最终求出来的最大值不属于单分组
  • 双重循环逻辑冗余,时间复杂度高,还容易出现变量作用域错误
  • 你给出的预期输出疑似存在笔误,第二个子列表漏写了第三个元素1488,符合业务逻辑的正确预期应为[['191','279','1488','1425'],['104','264','1488','1425']]
正确实现方案

使用字典做分组存储,仅需一次遍历即可完成计算,无需引入第三方库:

# 原始嵌套列表
raw_list = [
    ['191', '279', '1488', '1425'],
    ['191', '279', '1488', '855'],
    ['191', '279', '1488', '1140'],
    ['191', '279', '1488', '285'],
    ['191', '279', '1488', '665'],
    ['191', '279', '1488', '570'],
    ['104', '264', '1488', '1140'],
    ['191', '279', '1488', '760'],
    ['104', '264', '1488', '760'],
    ['104', '264', '1488', '665'],
    ['104', '264', '1488', '1425'],
    ['104', '264', '1488', '285'],
    ['104', '264', '1488', '855']
]

group_dict = {}
for item in raw_list:
    # 以前两个元素组成的元组作为分组唯一键(列表不能作为字典key)
    group_key = (item[0], item[1])
    current_4th = int(item[3])
    if group_key not in group_dict:
        # 新分组存入第三个元素和当前第四个元素的数值
        group_dict[group_key] = [item[2], current_4th]
    else:
        # 已有分组对比第四个元素,保留最大值
        if current_4th > group_dict[group_key][1]:
            group_dict[group_key][1] = current_4th

# 转换为要求格式的结果列表
maxlist = []
for key, value in group_dict.items():
    maxlist.append([key[0], key[1], value[0], str(value[1])])

print(maxlist)

如果你的原始输入是分号分隔的字符串集合,可以保留原有的拆分逻辑,将拆分得到的finallist替换上述代码中的raw_list即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:54:02