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

如何统计数组分组中包含目标数字的组数(每组仅计一次)

嘿,这个需求我太懂了!核心就是按「用户组」维度去重统计——只要某个组里的任意子数组包含目标数字,不管组内出现多少次,都只给这个组计1次。我给你拆解下实现思路,再用Python写个直观的示例:

核心思路

  1. 先把你的数据整理成「组名: 子数组列表」的结构(比如字典,方便遍历);
  2. 逐个检查每个组:只要该组的任意一个子数组里存在目标数字,就标记这个组符合条件;
  3. 最后统计符合条件的组的总数即可。

代码实现

假设你的数据是这样的字典结构(和你举的例子完全对应):

# 模拟你的分组数据
group_data = {
    "Tim": [[1, 2], [1, 3, 4], [3], [3, 6, 7]],
    "Beth": [[1, 3], [2], [7, 8]],
    "Luke": [[1], [2, 4], [1]]
}
target_num = 3  # 要查找的目标数字

然后用几行代码就能搞定统计:

# 初始化计数器
group_count = 0

# 遍历每个用户组
for group_name, subarrays in group_data.items():
    # 检查当前组是否包含目标数字:只要有一个子数组里有,就算符合条件
    has_target = any(target_num in subarray for subarray in subarrays)
    if has_target:
        group_count += 1

print(f"目标数字{target_num}共在{group_count}个组中出现")  # 输出:目标数字3共在2个组中出现

如果想封装成可复用的函数,更方便后续调用:

def count_target_groups(group_data, target):
    # 用生成器表达式简化计数逻辑
    return sum(1 for _, subarrays in group_data.items() if any(target in sa for sa in subarrays))

# 调用示例
result = count_target_groups(group_data, 3)
print(result)  # 输出2

关键细节解释

  • any()函数是这里的核心:它会遍历组内的所有子数组,只要找到一个包含目标数字的子数组,就立刻返回True,不用再继续检查后续子数组,效率很高;
  • 不管组里有多少个子数组包含目标数字,这个组只会被计数一次,完全符合你“组内多次出现仍计一次”的要求。

如果你的原始数据结构不是字典(比如是列表套元组),只需要调整遍历的方式,核心的any()判断逻辑完全不变~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:47:42