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

如何找出列表中的重复嵌套列表并按组返回?

解决嵌套列表重复项分组问题

核心问题:如何比较包含子列表的两个列表是否相等

在Python里,直接用==运算符就能判断这类嵌套列表是否完全相等——它会递归检查每一层的元素,只要所有子列表的内容、顺序完全一致,就会返回True。

实现步骤(以你的输入为例)

  1. 整理输入列表:把提供的内容转换成标准Python列表结构:
original_data = [
    [[1.0, 1.0], [1.0, 10.0], [1.0, 11.0], [1.0, 12.0], [1.0, 13.0]],
    [[2.0, 1.0], [2.0, 10.0], [2.0, 11.0], [2.0, 12.0], [2.0, 13.0]],
    [[3.0, 1.0], [3.0, 10.0], [3.0, 11.0], [3.0, 12.0], [3.0, 13.0]],
    [[4.0, 1.0], [4.0, 10.0], [4.0, 11.0], [4.0, 12.0], [4.0, 13.0]],
    [[4.0, 1.0], [4.0, 10.0], [4.0, 11.0], [4.0, 12.0], [4.0, 13.0]]
]
  1. 统计重复项:因为列表不可哈希,不能直接作为字典的键,所以先把每个子列表转成嵌套元组,再用字典统计每个结构对应的原列表:
from collections import defaultdict

count_map = defaultdict(list)
for item in original_data:
    # 将嵌套列表转为嵌套元组,作为字典的键
    key = tuple(tuple(sub_item) for sub_item in item)
    count_map[key].append(item)
  1. 提取重复组:筛选出出现次数≥2的分组,再整理成你需要的格式:
# 提取所有重复的子列表组
duplicate_groups = [group for group in count_map.values() if len(group) > 1]
# 把重复项平铺成目标格式的列表
final_result = []
for group in duplicate_groups:
    final_result.extend(group)

print(final_result)

运行后就会得到你想要的输出:

[[[4.0, 1.0], [4.0, 10.0], [4.0, 11.0], [4.0, 12.0], [4.0, 13.0]], [[4.0, 1.0], [4.0, 10.0], [4.0, 11.0], [4.0, 12.0], [4.0, 13.0]]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 07:10:31