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

Python按大洲汇总年度病例数代码的KeyError报错修复请求

排查修复KeyError:1990问题

常见触发原因及修复方案

  • 原因1:部分数据字典缺失1990年份键
    有些国家的病例数据里可能没有1990年的记录,直接用data[1990]访问就会触发KeyError。修复时用get()方法做安全访问,缺失年份默认计为0:

    cases = data.get(year, 0)
    
  • 原因2:结果字典未提前初始化年度键
    累加病例总和前,没有先给对应大洲的年度键赋值初始值,直接做continent_data[year] += cases就会报错。修复时需要先判断年度键是否存在,不存在就设为0:

    if year not in continent_data:
        continent_data[year] = 0
    continent_data[year] += cases
    
  • 原因3:年份字段是字符串类型(如"1990")
    数据集里的年份键可能是字符串而非整数,代码里用整数1990访问自然找不到。可以统一转换类型,或者直接用字符串遍历:

    # 遍历年份时用字符串
    years = [str(y) for y in range(1990, 2021)]
    # 或者访问时转换类型
    cases = data.get(str(year), 0)
    

完整修复示例代码

def calculate_continent_cases(dataset):
    result = {}
    # 覆盖1990到2020所有年份
    years = range(1990, 2021)
    
    for data in dataset:
        continent = data['大洲']
        # 初始化当前大洲的年度病例字典,所有年份默认0
        if continent not in result:
            result[continent] = {year: 0 for year in years}
        
        for year in years:
            # 安全获取病例数,兼容整数/字符串类型年份(按需切换注释)
            cases = data.get(year, 0)
            # cases = data.get(str(year), 0)
            result[continent][year] += cases
    
    return result

这段代码提前初始化了所有年份的初始值,用get()避免缺失键报错,同时兼容两种年份键类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 00:35:24