KeyError循环遍历每个键的多个值

2024-06-03 05:05:04 发布

您现在位置:Python中文网/ 问答频道 /正文

(这个问题可能与“使用‘for’循环遍历字典”不同,因为我对每个键都有多个条目,而且还存在“指向”正确键的问题)。在

有一本空字典:

import .math

instruments = {}

以下简单方法将填充它:

^{pr2}$

如果我们检查:

instruments.keys()

我们得到:[0.25, 0.5, 1.5, 1.0]

然后我想遍历字典,if coup == 0,执行某些操作,否则执行其他操作:

for T in instruments.items():
    (par, coupon, price, freq) = instruments[T]
    if coupon == 0:
          do_something

但是我得到了#KeyError: (0.25, (100, 0.0, 97.5, 2))

你知道我为什么要重新安排循环吗?蒂娅。在

编辑:使用下面的答案,BootstrapYieldCurve类按计划工作,在“掌握Python for Finance”一书中,ch5


Tags: 方法inimportforif字典条目items
1条回答
网友
1楼 · 发布于 2024-06-03 05:05:04

T是键,因此您应该使用for T in instruments进行迭代:

import math

instruments = {} 

def add_instrument(par, T, coup, price, compounding_freq = 2):
  instruments[T] = (par, coup, price, compounding_freq)

add_instrument(100, 0.25, 0., 97.5)
add_instrument(100, 0.5, 0., 94.9)
add_instrument(100, 1.0, 3., 90.)
add_instrument(100, 1.5, 8, 96., 2)

for T in instruments:
    par, coupon, price, freq = instruments[T]
    if coupon == 0:
        print(T)

如果使用for T in instruments.items()T将成为(key, value)的元组。当你寻找instruments[T]时,dict中没有这样的键

如果坚持使用items(),也可以直接解包值元组:

^{pr2}$

It输出:

0.25
0.5

相关问题 更多 >