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

Python实现元组列表按日期转换为指定格式去重嵌套字典

问题根因

原有代码逻辑存在两个核心错误:

  • 遍历元组时直接对msm名称对应的键做整体赋值,同msm下后遍历到的证书类型会直接覆盖之前存储的其他类型数据,无法合并多类证书计数
  • 没有提前为三类证书预设0值初始状态,缺失的证书类型不会自动补填默认值
正确实现代码
from collections import defaultdict

# 定义需要统计的全量证书类型,作为默认值模板
VALID_CERTS = ("base-certificate", "case-certificate", "standard-certificate")

# 初始化按日期分组的存储容器
grouped = defaultdict(dict)

# 遍历原始数据集m
for msm_name, cert_type, count, date in m:
    # 首次遇到当前日期下的指定msm时,初始化三类证书计数全为0
    if msm_name not in grouped[date]:
        grouped[date][msm_name] = {cert: 0 for cert in VALID_CERTS}
    # 更新对应类型的证书计数,不会覆盖其他类型的已有值
    # 若同一msm+日期+证书类型存在多条记录,用+=可自动累加;若单条记录唯一可直接用=赋值
    grouped[date][msm_name][cert_type] += count

# 为每个日期分组添加'x'键存储日期值,整理为最终结构
result = []
for date_val, msm_stats in grouped.items():
    date_group = {"x": date_val}
    date_group.update(msm_stats)
    result.append(date_group)
逻辑说明
  • 初始化msm维度的统计字典时,直接把三类证书的初始值设为0,遍历结束后自然不存在缺失值,不需要额外补0
  • 同日期下同msm的多条不同类型证书记录,只会更新对应类型的计数字段,不会覆盖其他类型的已存数据
  • 所有数据遍历完成后再统一添加x键存储日期,避免遍历过程中重复操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 10:27:17