我有以下代碼:的Python KeyError異常例外初始化字典
for serv in allservices:
services[serv['id']] = serv
hosts[serv['host']]['services'][serv['id']] = serv
其中allservices是字典列表和服務是一本字典。 此代碼位於一個函數中,該函數被調用兩次。它第一次工作正常。在第二時間,但是,我得到這個:
File "/media/sf_virtual_shared_folder/workfolder/omeganoc-sprint/onoc/omeganoc/grapher.py", line 338, in get_logical_dependencies_components for serv in allservices: KeyError: 9
現在,我知道,當我們試圖進入不存在字典的元素拿到了關鍵錯誤。但是,在這裏我嘗試初始化或編輯字典的一些值,第一次工作正常,第二次沒有。
什麼能導致這個問題,我該如何處理它?
編輯: 的allservices和服務定義:
allservices = [{'id':s.id,
'name':s.get_name(),
'host': s.host.id,
'required_services': {},
'dependent_services': {}}
for s in shinken.get_all_service()]
...
services = {}
編輯2:
OK,使用調試器,我發現該錯誤實際上是在循環的最後一行,即i N:
hosts[serv['host']]['services'][serv['id']] = serv
而且,這是因爲在主機我沒有元素主機[SERV [ '主機'],這實際上是主機[9 ],因此關鍵錯誤:9.
但是,即使我沒有這個元素 - 它應該在這裏初始化,所以我仍然不明白爲什麼它不起作用?
解決這個問題,你可以發佈你的代碼的其餘部分? – dm03514
什麼是服務類變量?是「詞典」還是其他的東西? – ElmoVanKielmo
循環中的'print serv'是什麼給了? – RedBaron