python keyerror列名报错,key error python
在读取dict的键和值时,如果键不存在,就会触发一个KeyError,比如:
t={
a:1 ,
b:2 ,
c:3 ,
}
打印(t[d])将出现:
关键错误: d 第一种解决方法
首先测试密钥是否存在,然后进行下一步,例如:
t={
a:1 ,
b:2 ,
c:3 ,
}
if d int:
打印(t[d])
else:
将出现Print(notexist ):
notexist相关推荐:《Python教程》
第二种解决方法
使用dict内置的get(key[,default])方法,如果key存在,则返回其值,否则返回default;使用这个方法永远不会触发KeyError,比如:
t={
a:1 ,
b:2 ,
c:3 ,
}
Print(t.get(d ))将出现:
不添加默认参数:
t={
a:1 ,
b:2 ,
c:3 ,
}
print(t.get(d , notexist ))
打印(t)将出现:
不存在
{a:1 , c:3 , b : 2 }第三种解决方法
使用dict内置的setdefault(key[,default])方法返回key的值(如果存在的话);否则,插入该键,其值为default,并返回default;使用这个方法永远不会触发KeyError,比如:
t={
a:1 ,
b:2 ,
9;c':'3',
}
print(t.setdefault('d'))
print(t)会出现:
None
加上default参数:
t={
会出现:
notexist
第四种解决方法
向类dict增加__missing__()方法,当key不存在时,会转向__missing__()方法处理,而不触发KeyError,如:
t={
会出现:
None
更改return值:
t={
会出现:
d
第五种解决方法
利用collections.defaultdict([default_factory[,...]])对象,实际上这个是继承自dict,而且实际也是用到的__missing__()方法,其default_factory参数就是向__missing__()方法传递的,不过使用起来更加顺手:
如果default_factory为None,则与dict无区别,会触发KeyError错误,如:
importcollections
会出现:
KeyError:'d'
但如果真的想返回None也不是没有办法:
importcollections
会出现:
None
如果default_factory参数是某种数据类型,则会返回其默认值,如:
importcollections
会出现:
0
又如:
importcollections
会出现:
[]
注意:
如果dict内又含有dict,key嵌套获取value时,如果中间某个key不存在,则上述方法均失效,一定会触发KeyError:
importcollections
会出现:
KeyError:'y'
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。