用于初始化字典的Python KeyError异常

我有以下代码:


for serv in allservices:

    services[serv['id']] = serv

    hosts[serv['host']]['services'][serv['id']] = serv

其中allservices是词典列表,而services是字典。此代码在一个函数中,该函数被调用两次。第一次工作正常。但是,第二次,我得到了:


get_logical_dependencies_components中的文件“ /media/sf_virtual_shared_folder/workfolder/omeganoc-sprint/onoc/omeganoc/grapher.py”第338行,用于所有服务中的serv:KeyError:9


现在,我知道当我们尝试输入字典中不存在的元素时会遇到关键错误。但是,在这里,我尝试初始化或编辑字典的某些值,并且第一次可以正常工作,而第二次则不能。


是什么导致此问题,我该如何处理?


森栏
浏览 266回答 2
2回答

守着一只汪

hosts[serv['host']]['services'][serv['id']] = serv该行不初始化hosts[serv['host']]。它的作用大致如下a=hosts[serv['host']]b=a['services']c=b[serv['id']]c=serv因此hosts[serv['host']]它获取 而不是初始化hosts[serv['host']]。您可以通过使用atry except或a来解决此问题。get()

森林海

使用调试器,我发现错误实际上是在循环的最后一行中:hosts[serv['host']]['services'][serv['id']] = serv而且,因为在主机中我没有元素hosts [serv ['host']],实际上它是hosts [9],因此存在关键错误:9。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python