You need to enable JavaScript to run this app. 如何用Python删除主列表中的重复子列表
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python删除主列表中的重复子列表

Python 嵌套子列表去重实现(保留原始顺序)

核心注意点

  • 直接对主列表调用内置set()去重会触发报错:列表属于不可哈希的可变类型,无法直接作为集合的元素。
  • 这类嵌套列表去重的核心需求是保留子列表第一次出现的原始顺序,避免乱序输出不符合业务预期。

实现方法1:遍历中转去重(全Python版本兼容,严格匹配输出要求)

将不可哈希的子列表转换为可哈希的元组做重复标记,遍历过程中收集未重复的子列表,完全适配给定的输入场景。
示例代码:

# 给定输入
original_list = [['a','b'],['c','f'],['a','b'],['d','f']]
seen = set()
filtered_list = []
for sublist in original_list:
    # 转换为元组用于重复判断,不修改原始子列表的结构
    sub_hash = tuple(sublist)
    if sub_hash not in seen:
        seen.add(sub_hash)
        filtered_list.append(sublist)

运行后输出结果为:[['a', 'b'], ['c', 'f'], ['d', 'f']],与期望输出完全一致。

实现方法2:简洁写法(Python 3.7+ 适用)

利用Python 3.7及以上版本中字典的插入有序特性,通过dict.fromkeys自动过滤重复值,精简实现逻辑:

original_list = [['a','b'],['c','f'],['a','b'],['d','f']]
# 转元组完成去重后,再转回列表结构匹配输出格式
filtered_list = [list(item) for item in dict.fromkeys(tuple(subl) for subl in original_list)]

两种实现的去重逻辑均不会打乱主列表的原有元素排布,和直接调用set导致的乱序结果有本质区别。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 14:54:08