(这个问题可能与“循环使用字典迭代”有所不同,因为我有多个键,每个键都有多个条目,并且还有问题指向正确的键)。KeyError通过循环遍历每个键的多个值
有这个空字典:
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)
如果我们检查:
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))
任何想法,为什么和我应该如何重新安排循环? TIA。
'对于T在instruments.items():'应该是'为T在instruments.keys()中:'或者只是'用于乐器中的T:' –
当您在instruments.items()中更改'T'时:'to'为T,_中的instruments.items():'也是,我相信你应该在你的add_instruments函数中写入'global instruments'。 – SRC