我有以下代码: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现在,我知道当我们尝试输入字典中不存在的元素时会遇到关键错误。但是,在这里,我尝试初始化或编辑字典的某些值,并且第一次可以正常工作,而第二次则不能。是什么导致此问题,我该如何处理?
2 回答
守着一只汪
TA贡献1872条经验 获得超3个赞
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()
森林海
TA贡献2011条经验 获得超2个赞
使用调试器,我发现错误实际上是在循环的最后一行中:
hosts[serv['host']]['services'][serv['id']] = serv
而且,因为在主机中我没有元素hosts [serv ['host']],实际上它是hosts [9],因此存在关键错误:9。
添加回答
举报
0/150
提交
取消