如何基于子列表第二个元素找出嵌套列表中的重复项
解决方案
针对大数据场景,推荐用**集合(set)**记录已出现的子列表第二个元素——集合的存在性检查时间复杂度为O(1),远优于列表的O(n),能大幅提升处理效率。具体实现逻辑如下:
初始化三个变量:
unique:存储唯一子列表(保留完整元素)duplicate:存储重复子列表(保留完整元素)seen:集合,用于快速判断子列表第二个元素是否已出现
遍历原嵌套列表的每个子列表:
- 若子列表的第二个元素不在
seen中,将整个子列表加入unique,同时把该元素加入seen - 若已存在,则将整个子列表加入
duplicate
- 若子列表的第二个元素不在
代码实现
a = [['1', '1', '2'], ['2', '2', '3'], ['2', '1', '2']] unique = [] duplicate = [] seen = set() for row in a: key = row[1] if key not in seen: unique.append(row) seen.add(key) else: duplicate.append(row) print("unique:", unique) # 输出: [['1', '1', '2'], ['2', '2', '3']] print("duplicate:", duplicate) # 输出: [['2', '1', '2']]
适配大数据的优势
- 集合的
in操作平均时间复杂度为O(1),遍历整个列表的时间复杂度为O(n),整体效率极高 - 无需额外复杂数据结构,内存占用低,适合处理大规模数据集
内容的提问来源于stack exchange,提问作者qwer123
相关产品推荐
相关产品推荐

