Python如何统计列表中出现次数超过1次的重复子列表数量
子列表重复频次统计实现方案
核心逻辑:由于Python列表是可变不可哈希类型,无法直接作为计数的key,因此先将每个子列表转为不可变的元组,再统计各元组的出现次数,最后统计出现次数大于1的元组总数即可。
两种实现均无第三方依赖,时间复杂度为O(n),适配11万级的数据量无性能压力。
实现1:使用标准库collections.Counter(标准库无需额外安装)
from collections import Counter # 替换为你的实际列表即可 original_list = [[123, 456], [111, 111], [222, 222], [333, 333], [123, 456], [222, 222], [123, 456]] # 转换为元组后统计频次 count_result = Counter(tuple(sublist) for sublist in original_list) # 计算出现次数>1的元素总数 output = sum(1 for count in count_result.values() if count > 1) print(output) # 示例输出:2
实现2:完全不导入模块,原生字典实现
original_list = [[123, 456], [111, 111], [222, 222], [333, 333], [123, 456], [222, 222], [123, 456]] count_dict = {} for sub in original_list: key = tuple(sub) count_dict[key] = count_dict.get(key, 0) + 1 output = 0 for cnt in count_dict.values(): if cnt > 1: output += 1 print(output) # 示例输出:2
内容的提问来源于stack exchange,提问作者niristius
相关产品推荐
相关产品推荐

