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

Python:统计元组列表中各元组在列表列表中的出现次数

统计元组在列表子列表中的出现次数(元素全包含即计数)

我来帮你搞定这个统计需求~核心思路很简单:只要元组的所有元素都存在于某个子列表中,就给该元组的计数加1,Python的集合子集判断特性刚好能完美适配这个场景。

先明确示例数据

mytuples = [(2,3), (3,6), (1,2)]
mylist = [[1,2,3,4],[2,3,4,5],[2,3],[4,5,6]]

基础实现代码

我们可以用字典来存储每个元组的计数,遍历每个元组后,逐个检查子列表是否满足条件:

# 初始化结果字典,所有元组初始计数为0
result = {t: 0 for t in mytuples}

# 遍历每个需要统计的元组
for tpl in mytuples:
    # 把元组转成集合,方便快速做子集判断
    tpl_set = set(tpl)
    # 逐个检查每个子列表
    for sublist in mylist:
        # 判断元组的所有元素是否都在子列表中
        if tpl_set.issubset(set(sublist)):
            result[tpl] += 1

print(result)

运行结果

执行上面的代码后,会得到预期的输出:

{(2, 3): 3, (3, 6): 1, (1, 2): 1}

性能小优化

如果mylist里的子列表数量很多,每次循环都转换子列表为集合会有点浪费性能,我们可以提前把所有子列表转成集合存起来:

# 提前将所有子列表转换为集合,避免重复转换操作
sublist_sets = [set(sublist) for sublist in mylist]
result = {t: 0 for t in mytuples}

for tpl in mytuples:
    tpl_set = set(tpl)
    for s_set in sublist_sets:
        if tpl_set.issubset(s_set):
            result[tpl] += 1

print(result)

这样循环时就不用重复做集合转换,处理大量数据时效率会提升不少~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:58:43