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

Python3如何按字典Key的子串分组并对对应Value求和

Python按字典键前缀分组求和实现方案

核心逻辑是遍历原字典,从键中提取季度前缀,再按前缀累加对应值即可,以下是几种常用实现方式:

方法1:原生字典实现(无需导入依赖)

# 注意不要用dict作为变量名,会覆盖Python内置类型
input_dict = {'S01E01': 27, 'S01E02': 27, 'S01E03': 32, 'S01E04': 36, 'S01E05': 35, 'S01E06': 31,
 'S02E01': 33, 'S02E02': 21, 'S02E03': 20, 'S02E04': 29, 'S02E05': 33, 'S02E06': 42}

output_dict = {}
for k, v in input_dict.items():
    # 提取季度前缀:按'E'分割取第一部分,适配S01/S10等不同位数的季度编号
    season = k.split('E')[0]
    # 累加计数,key不存在时默认初始值为0
    output_dict[season] = output_dict.get(season, 0) + v

运行后output_dict就是你需要的结果:{'S01': 188, 'S02': 178}

方法2:使用defaultdict简化写法

from collections import defaultdict

input_dict = {'S01E01': 27, 'S01E02': 27, 'S01E03': 32, 'S01E04': 36, 'S01E05': 35, 'S01E06': 31,
 'S02E01': 33, 'S02E02': 21, 'S02E03': 20, 'S02E04': 29, 'S02E05': 33, 'S02E06': 42}

output_dict = defaultdict(int)
for k, v in input_dict.items():
    season = k.split('E')[0]
    output_dict[season] += v

# 如需转为普通字典,执行下面这行即可
# output_dict = dict(output_dict)

注意事项

  • 如果你的剧集编号规则有变化,前缀提取逻辑对应修改即可,比如固定取前3位的话把k.split('E')[0]替换为k[:3]
  • 避免使用dict作为自定义变量名,否则会导致后续调用内置字典类型时报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:45:04