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

Python:统计字典各键对应列表的索引唯一元组数量

高效处理字典中同索引元组的唯一性计数

问题描述

给定如下结构的字典:

lists_dict = { 
    1: [('64', 'R'), ('0', 'n'), ('0', 'M')],
    2: [('64', 's'), ('0', 'r'), ('0', 'M')], 
    3: [('64', 'R'), ('0', 'n'), ('0', 'M')], 
    4: [('64', 'I'), ('0', 'S'), ('0', 'N')] 
}

需求:对比各列表同索引位置的元组,若某个元组在其他所有列表的同索引位置都不存在,则为对应键的计数加1。最终输出每个键对应的原列表及计数,示例输出如下:

1: [('64', 'R'), ('0', 'n'), ('0', 'M')],0 #(no unique)
2: [('64', 's'), ('0', 'r'), ('0', 'M')],2 #(two unique tuples)
3: [('64', 'R'), ('0', 'n'), ('0', 'M')],0 #(no unique)
4: [('64', 'I'), ('0', 'S'), ('0', 'N')], 3 #(unique, no other list have these values)

实际场景中,字典包含400个键,每个列表有22个二元元组,需要高效替代两两遍历的低效方案。

高效解决方案

核心思路是先全局统计每个索引位置下各元组的出现次数,再基于统计结果快速计算每个键的唯一元组计数,避免两两对比的高复杂度。

实现代码

from collections import Counter

def count_unique_tuples(lists_dict):
    # 1. 按索引位置分组所有元组,统计每个索引下元组的出现次数
    index_tuple_counts = []
    for index_group in zip(*lists_dict.values()):
        count = Counter(index_group)
        index_tuple_counts.append(count)
    
    # 2. 遍历每个键,计算唯一元组的数量
    result = {}
    for key, tuples_list in lists_dict.items():
        unique_count = 0
        for idx, tpl in enumerate(tuples_list):
            if index_tuple_counts[idx][tpl] == 1:
                unique_count += 1
        result[key] = (tuples_list, unique_count)
    
    # 3. 按示例格式输出
    for key, (tpl_list, cnt) in result.items():
        comment = f"({cnt} unique tuple{'s' if cnt !=1 else ''})" if cnt else "(no unique)"
        print(f"{key}: {tpl_list},{cnt} #{comment}")

# 测试示例
lists_dict = { 
    1: [('64', 'R'), ('0', 'n'), ('0', 'M')],
    2: [('64', 's'), ('0', 'r'), ('0', 'M')], 
    3: [('64', 'R'), ('0', 'n'), ('0', 'M')], 
    4: [('64', 'I'), ('0', 'S'), ('0', 'N')] 
}
count_unique_tuples(lists_dict)

效率说明

  • 时间复杂度:O(NK),其中N是字典键的数量(400),K是每个列表的元组数量(22)。全局统计和后续遍历各占一次O(NK),远优于两两对比的O(N²K)(400²22=3,520,000 vs 400222=17,600)。
  • 空间复杂度:O(KN),用于存储每个索引的元组计数,对于40022的规模完全可控。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 11:08:15