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

Python:如何在嵌套列表中去重并保留第二个元素值最大的项?

处理嵌套列表重复项,保留最大分数项

给定一个嵌套列表,子列表的第一个元素存在重复,需要去除重复项,仅保留每个第一个元素对应的第二个元素(分数)最大的项。

示例输入

list_dup = [["Apple", 24],
["Apple", 23], 
["Sun", 15], 
["Apple", 2], 
["Sun", 1],
["Blue", 15]
]

期望输出

[["Apple", 24], 
    ["Sun", 15], 
    ["Blue", 15]
]

解决方案

利用字典的键唯一性来实现,遍历列表时记录每个元素对应的最高分数,最后转换回嵌套列表格式即可:

基础实现(Python 3.7+)

max_score_dict = {}

for key, score in list_dup:
    if key not in max_score_dict or score > max_score_dict[key]:
        max_score_dict[key] = score

# 转换为目标格式
result = [[k, v] for k, v in max_score_dict.items()]

兼容旧版本Python(3.6及更早)

如果需要保持元素的插入顺序且兼容Python 3.6及更早版本,可以使用OrderedDict:

from collections import OrderedDict

max_score_dict = OrderedDict()

for key, score in list_dup:
    if key not in max_score_dict or score > max_score_dict[key]:
        max_score_dict[key] = score

result = [[k, v] for k, v in max_score_dict.items()]

说明

  1. 字典max_score_dict用来存储每个元素名对应的最高分数,遍历过程中会自动跳过分数更低的重复项。
  2. Python 3.7及以上版本的字典默认保留插入顺序,因此最终结果的元素顺序会和原列表中首次出现的顺序一致。
  3. 列表推导式将字典的键值对转换回需求的嵌套列表结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 05:25:51