同福

Python的KeyError的解决办法【20210328】

介绍

介绍

福哥在编写python程序的时候比较喜欢用dict类型对象,尤其喜欢用多级dict数据结构。但是有个问题,如果调用一个不存在的元素就会报出KeyError异常,要在上下文里增加try ... except太麻烦了,怎么办呢?

今天福哥给出一些判断dict类型对象是否包含某个键的元素的方法,大家可以根据自己的喜好选择使用。

解决办法

方法1

通过in判断key是否存在

my = {"nick":"福哥","age":"35","languages":["c/c++","java","php","python","javascript"]}

if "province" in my:
    print(my["province"])

方法2

使用get方法判断key是否存在

my = {"nick":"福哥","age":"35","languages":["c/c++","java","php","python","javascript"]}

if my.get("province") is not None:
    print(my["province"])

方法3

使用get方法的第二个参数,如果目标key不存在则返回第二个参数

my = {"nick":"福哥","age":"35","languages":["c/c++","java","php","python","javascript"]}

print(my.get("province", "北京"))
print(my)

方法4

使用setdefault方法的第二个参数,如果目标key不存在则返回第二个参数同时讲第二个参数写入key位置

my = {"nick":"福哥","age":"35","languages":["c/c++","java","php","python","javascript"]}

print(my.setdefault("province", "北京"))
print(my)

总结

在编写python程序的时候,经常会遇到KeyError这种情况,如果直接使用触发了异常程序就会终止执行了,如果要增加try ... except语句捕获未免太麻烦了,学会使用这些技巧之后就可以从容应对了!