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

如何提取集合列表中的唯一集合并统计其出现次数?

集合列表去重与频次统计实现

给定初始字符串列表:

['abc', 'acb', 'bac', 'foo', 'bca', 'cab', 'cba']

通过list(map(set, x))转换得到集合列表:

[{'a', 'b', 'c'}, {'a', 'b', 'c'}, {'a', 'b', 'c'}, {'f', 'o'}, {'a', 'b', 'c'}, {'a', 'b', 'c'}, {'a', 'b', 'c'}]

需求一:提取唯一集合

由于普通集合是不可哈希类型,无法直接用set()去重,需先转为可哈希的frozenset处理,再转回普通集合:

original_sets = [{'a', 'b', 'c'}, {'a', 'b', 'c'}, {'a', 'b', 'c'}, {'f', 'o'}, {'a', 'b', 'c'}, {'a', 'b', 'c'}, {'a', 'b', 'c'}]
unique_sets = [set(s) for s in set(frozenset(item) for item in original_sets)]
print(unique_sets)

输出结果:

[{'a', 'b', 'c'}, {'f', 'o'}]

需求二:统计各集合出现次数

同样借助frozenset作为字典键(字典键需为可哈希类型),结合defaultdict完成频次统计,最后可将键转回普通集合:

from collections import defaultdict

original_sets = [{'a', 'b', 'c'}, {'a', 'b', 'c'}, {'a', 'b', 'c'}, {'f', 'o'}, {'a', 'b', 'c'}, {'a', 'b', 'c'}, {'a', 'b', 'c'}]
count_dict = defaultdict(int)

for s in original_sets:
    count_dict[frozenset(s)] += 1

# 转换为以普通集合为键的字典
result_dict = {set(k): v for k, v in count_dict.items()}
print(result_dict)

输出结果:

{{'a', 'b', 'c'}: 6, {'f', 'o'}: 1}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 09:24:19