(這個問題可能與「循環使用字典迭代」有所不同,因爲我有多個鍵,每個鍵都有多個條目,並且還有問題指向正確的鍵)。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