python keyerror列名报错,key error python

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: