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

Python中合并不同长度列表并按a/b分类统计数值出现次数的方法

Python实现分类统计数值出现次数

核心逻辑

利用Python内置的迭代配对和计数工具完成统计,不需要额外安装第三方依赖:

  1. 拆分原始嵌套列表,取出标签序列和对应的数值子列表集合
  2. 按标签配对对应的数值子列表,遍历所有数值分类计数
  3. 按要求格式化输出统计结果

实现代码

基于collections的简洁写法

from collections import defaultdict, Counter

# 原始嵌套列表
raw_data = [['a','a','b','a','b','b','b'], [5,5,4,5], [5,1,5], [2,5], [4,5], [5], [3], [5]]

# 拆分标签列表与数值子列表集合
label_list = raw_data[0]
num_list_group = raw_data[1:]

# 初始化统计容器
count_stat = defaultdict(Counter)

# 配对标签与对应数值子列表,更新计数
for label, nums in zip(label_list, num_list_group):
    count_stat[label].update(nums)

# 按要求格式化输出
for label, counter in count_stat.items():
    output_parts = [f'{count}个"{num}"' for num, count in counter.items()]
    print(f'"{label}"共包含{"、".join(output_parts)};')

无额外依赖的原生字典写法

如果不想引入collections模块,可以用原生Python字典实现:

raw_data = [['a','a','b','a','b','b','b'], [5,5,4,5], [5,1,5], [2,5], [4,5], [5], [3], [5]]
label_list = raw_data[0]
num_list_group = raw_data[1:]

# 初始化统计容器
count_stat = {'a': {}, 'b': {}}

for label, nums in zip(label_list, num_list_group):
    for num in nums:
        if num in count_stat[label]:
            count_stat[label][num] += 1
        else:
            count_stat[label][num] = 1

# 格式化输出
for label, stat in count_stat.items():
    output_parts = [f'{count}个"{num}"' for num, count in stat.items()]
    print(f'"{label}"共包含{"、".join(output_parts)};')

运行结果

两种写法执行后均会输出预期结果:

"a"共包含6个"5"、2个"4"、1个"1";
"b"共包含3个"5"、1个"2"、1个"3";

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:15:03