即使使用某些值初始化,python dict 也会给出关键错误

问题描述 投票:0回答:2
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'

最后一行为什么?

有人可以帮我找出我在这里犯的错误吗?

python pandas list dictionary
2个回答
1
投票

只需更改

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
对其进行初始化。


-1
投票

这段代码有点多余,无论如何,一个快速的解决方案是在第一个数据[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']

这会起作用

© www.soinside.com 2019 - 2024. All rights reserved.