python keyerror_python 字典的KeyError处理方法

先看一段代码:user = dict(name="brainliao", age=32)

print(user["sex"])

运行结果如下:

user这个字典中没有sex这个key,所以访问user[“sex”]会报KeyError这个错

有如下3中解决方式:

1、调用get(k, default)方法user = dict(name="brainliao", age=32)

print(user.get("sex", "男"))

结果如下:

2、用collections.defaultdict()方法import collections

user = collections.defaultdict(str)

print(user["sex"])结果打印出空字符串这个方法的含义在于指定了字典中的所有values均为字符串,并默认值为空字符串。所有调用user["sex"]不会报错。但是这种方法有局限性,就是不适合不同的key对应不用类型的value的字典定义。3、重定义__missing__方法class User(dict):

def __missing__(self,key):

print("调用了 User的__missing__方法")

return "__missing__"

def __getitem__(self, item):

print("调用User 类的 __getitem__方法")

return super(User, self).__getitem__(item)

def get(self, k, d=None):

print("调用User 类的 get 方法")

return super(User, self).get(k, d)

user = User(name="brianliao", age=32)

print(user["sex"])打印结果如下:

调用User 类的 __getitem__方法

调用了 User的__missing__方法

__missing__

从打印的结果可以看出,获取字典key对应的值时,会去调用内部的__getitem__方法,而当__getitem__没找到对应的key时,会调用__missing__方法。最终返回结果。

总结,最简单、最直接的方式还是使用第一种方式,第二种方式具有很大的局限性,第三种方式在一些特殊情况下很合适使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值