data={}
vega={}
for coin in ['BTC']:
vega[coin] = {}
data[coin] = {}
data[coin]['columns']=['27-Apr-24', '28-Apr-24', '29-Apr-24', '03-May-24', '10-May-24', '17-May-24', '31-May-24']
for expiry in data[coin]['columns']:
vega[coin][expiry] = data[coin].get('Vega', {}).get('Total', {}).get(expiry, 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[coin][expiry] += data[coin].get('Vega', {}).get('Total', {}).get(expiry, 0)
我正在初始化字典,如果键不存在则给出值。
但是,得到
KeyError: '28-Jun-24'
最后一行为什么?
有人可以帮我找出我在这里犯的错误吗?
只需更改
vega[coin][expiry] += data[coin].get('Vega', {}).get('Total', {}).get(expiry, 0)
到
vega[coin][expiry] = vega.get(coin, {}).get(expiry, 0) + data[coin].get('Vega', {}).get('Total', {}).get(expiry, 0)
并且您不会收到错误。
但是,请注意,您没有使用
28-Jun-24
对其进行初始化。
这段代码有点多余,无论如何,一个快速的解决方案是在第一个数据[coin]['columns']赋值中添加'28-Jun-24'。
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']
这会起作用