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

Python嵌套列表去重:保留首元素相同且第三元素最小的子列表

解决嵌套列表按指定字段去重并保留最小值项的问题

嘿,这问题我熟!你要做的是按子列表第一个元素分组,每组保留第三个元素最小的项对吧?你的嵌套循环思路其实有点绕,用字典来处理会更高效清晰,我给你捋清楚:

完整代码实现

l = [['a', 'random_str', 4], ['b', 'random_str2', 5], ['b', 'random_str3', 7]]

# 用字典存储每个键对应的最小子列表,键为子列表第0个元素
min_dict = {}

for sublist in l:
    key = sublist[0]
    current_num = sublist[2]
    
    # 若键不存在,或当前子列表的数值更小,则更新字典
    if key not in min_dict or current_num < min_dict[key][2]:
        min_dict[key] = sublist

# 将字典的值转换为列表,得到最终结果
result = list(min_dict.values())
print(result)  # 输出: [['a', 'random_str', 4], ['b', 'random_str2', 5]]

代码思路解释

  • 字典分组:用min_dict来记录每个第一个元素(比如'a'、'b')对应的最小子列表,这样能快速判断当前元素是否已经出现过。
  • 遍历判断:遍历每个子列表时,取出用于分组的key和用于比较大小的current_num(子列表第2个索引的整数)。
  • 更新逻辑:如果key不在字典里,直接把当前子列表存进去;如果已经存在,就对比两个子列表的数值,保留更小的那个。
  • 结果转换:最后把字典中的所有值转换成列表,就是我们需要的去重后结果。

为什么不用嵌套循环?

你最开始写的嵌套循环虽然能实现,但需要多次遍历列表,时间复杂度是O(n²),当列表里的元素很多时,运行速度会明显变慢。而用字典的方法只需要遍历一次列表,时间复杂度是O(n),效率提升非常明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 14:14:09