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

如何高效统计模拟生成的多层嵌套字典中重复列表占比?

解决大型字典中重复列表占比统计问题

问题描述

给定嵌套字典结构,需统计每个字母键(如a、b)下各子键对应的列表集合中,完整重复列表的占比。数据量约70万个列表,要求处理高效,同时避免转字符串的歧义问题,且Counter无法直接处理列表、Pandas的explode+count方案不适用。

字典结构示例:

my_dict = {
    'a': {
        1: [[1,2,3], [1,2,3], [1,2,3], [1,3,5]],
        2: [[2,44,57,18], [2,44,57,18], [2,44,57,23], [2,44,57,23]]},
    'b': {
        3: [[3,67,50], [3,67,50], [3,36]],
        4: [[4,12,34], [4,12]]}}

解决方案

核心思路

由于列表不可哈希,无法直接作为Counter的键,选择将列表转换为元组(元组可哈希、转换无歧义且效率极高),再用Counter统计重复次数,最后计算占比。

代码实现

from collections import Counter

# 示例字典(实际替换为你的大型字典)
my_dict = {
    'a': {
        1: [[1,2,3], [1,2,3], [1,2,3], [1,3,5]],
        2: [[2,44,57,18], [2,44,57,18], [2,44,57,23], [2,44,57,23]]},
    'b': {
        3: [[3,67,50], [3,67,50], [3,36]],
        4: [[4,12,34], [4,12]]}}

# 存储最终结果
result = {}

# 遍历外层字母键
for letter_key, sub_dict in my_dict.items():
    result[letter_key] = {}
    # 遍历内层数字键
    for num_key, lists in sub_dict.items():
        # 将列表转换为元组(可哈希,用于Counter统计)
        tuple_list = [tuple(lst) for lst in lists]
        # 统计每个元组的出现次数
        count_stats = Counter(tuple_list)
        total_lists = len(tuple_list)
        
        # 计算每个重复列表的占比(仅保留出现次数>1的项)
        duplicate_item_ratios = {list(tpl): cnt / total_lists for tpl, cnt in count_stats.items() if cnt > 1}
        # 计算整体重复列表的占比(所有重复项的总出现数/总列表数)
        overall_duplicate_ratio = sum(cnt for cnt in count_stats.values() if cnt > 1) / total_lists
        
        # 存入结果字典
        result[letter_key][num_key] = {
            "各重复列表占比": duplicate_item_ratios,
            "整体重复占比": overall_duplicate_ratio
        }

# 打印结果示例
for letter, sub_result in result.items():
    print(f"字母键 {letter}:")
    for num, ratios in sub_result.items():
        print(f"  数字键 {num}:")
        print(f"    各重复列表占比: {ratios['各重复列表占比']}")
        print(f"    整体重复占比: {ratios['整体重复占比']:.2%}")

方案优势

  1. 高效性:列表转元组和Counter统计均为O(n)时间复杂度,处理70万列表无性能压力;
  2. 无歧义:元组与列表结构完全对应,不会出现转字符串时的格式冲突问题;
  3. 灵活性:可同时获取单个重复列表的占比和整体重复占比,满足不同统计需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 10:30:59