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

Python字典初始化后仍报KeyError: '28-Jun-24',求排查错误原因

问题分析与修复

错误原因

报错的核心是**vega[coin]['28-Jun-24']这个键从未被初始化**,直接使用+=操作触发了KeyError:

  1. 第一个循环里,你仅为data[coin]['columns']中的7个到期日(不含28-Jun-24)在vega[coin]中创建了键并赋值;
  2. 第二个循环新增了28-Jun-24到columns,但循环到该值时,vega[coin]中没有对应的键,执行vega[coin][expiry] += ...时,Python会先尝试读取该键的当前值,因键不存在直接抛出KeyError。

你用get方法处理的是data字典的取值,但vega字典中新增的键没有做默认值处理。

修复方案

把第二个循环中的赋值语句改成先通过get获取vega中已有值(不存在则取0),再加上新的数值:

for coin in ['BTC']:
    data[coin]['columns']=['27-Apr-24', '28-Apr-24', '29-Apr-24', '03-May-24', '10-May-24', '17-May-24', '31-May-24', '28-Jun-24']
    for expiry in data[coin]['columns']:
        # 先获取vega中已有值,不存在则用0,再加上新计算的数值
        vega[coin][expiry] = vega[coin].get(expiry, 0) + data[coin].get('Vega', {}).get('Total', {}).get(expiry, 0)

这样无论expiry是否在vega[coin]中存在,都会先拿到合法的初始值(0或已有值),再执行加法操作,避免KeyError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 07:53:08