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

已排序嵌套列表如何按子列表前两位去重并保留第三位最小项

你的思路完全正确,因为原列表已经按子列表最后一位升序排列,首次出现的前两位组合对应的一定是最后一位最小的条目,直接按这个逻辑实现即可:


实现代码

l_of_l = [ [1,2,1], [3,4,2], [3,4,5], [3,4,7], [9,10,8], [11,12,9] ]

seen_keys = set()
new_list = []
for sub_list in l_of_l:
    # 取前两位作为去重键,转元组存入集合(列表不可哈希,元组支持)
    unique_key = tuple(sub_list[:-1])
    if unique_key not in seen_keys:
        seen_keys.add(unique_key)
        new_list.append(sub_list)

# 输出验证
print(new_list)

运行后输出正好符合预期:
[[1, 2, 1], [3, 4, 2], [9, 10, 8], [11, 12, 9]]


方案说明

  • 全程只遍历一次原列表,时间复杂度为O(n),执行效率很高
  • 天然支持子列表元素为整数、字符串等所有可哈希、可比较的类型,不需要额外适配
  • 如果后续遇到未提前排序的列表,只需要先加一行排序代码即可复用逻辑:
    # 按子列表最后一位升序排序,兼容数字、字符串比较
    l_of_l.sort(key=lambda x: x[-1])
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:36:05