为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

森栏 2021-03-26 15:10:14
我有以下代码: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()


查看完整回答
反对 回复 2021-03-30
?
森林海

TA贡献2011条经验 获得超2个赞

使用调试器,我发现错误实际上是在循环的最后一行中:

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

而且,因为在主机中我没有元素hosts [serv ['host']],实际上它是hosts [9],因此存在关键错误:9。


查看完整回答
反对 回复 2021-03-30
  • 2 回答
  • 0 关注
  • 265 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信