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

Python:统计元组在列表集合中的子集出现次数(扩展问题)

统计元组作为子集在列表列表中的出现次数

这是「Python - 在列表的列表中查找元组」问题的扩展,核心需求是对比两组数据:一组元组、一组列表,统计每个元组作为子集出现在目标列表中的次数。

高效实现方案

我采用了预转换集合的方式来优化性能,避免嵌套循环里重复转换的冗余开销,代码如下:

# 输入数据
tuples = [(2,3), (3,6), (1,2)]
lists = [[1,2,3,4],[2,3,4,5],[2,3],[4,5,6]]

# 一次性转换所有元组和列表为集合,减少重复计算
subsets = {t : set(t) for t in tuples}
mainsets = [set(xs) for xs in lists]

# 用字典推导式快速生成统计结果
tallies = { tup : sum(s.issubset(m) for m in mainsets) for tup, s in subsets.items() }

思路说明

  • 预转换优化:把所有元组和列表提前转成集合,这样在后续的子集判断环节,不用每次循环都执行转换操作,尤其当数据量较大时,能明显提升效率。
  • 简洁统计逻辑:利用集合的issubset()方法判断元组对应的集合是否是列表对应集合的子集,sum()函数会把布尔值True/False自动转为1/0,直接累加得到每个元组的出现次数,最后用字典推导式直接输出「元组-次数」的映射结果。

运行这段代码后,tallies的结果为:{(2, 3): 3, (3, 6): 1, (1, 2): 1},完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:08:09