01字典值获取
在 python 语言当中,经常会用到 dict 字典这种数据类型。当在字典当中获取一个不存在的 key 时,会引发异常。
比如在下面这个例子当中,gender 这个 key 在字典当中不存在,如果强行访问就会报错。
报错信息:
这给访问数据的时候造成一定的困扰,我们需要频繁的用类似 if "gender" in user 这样的判断语句去判断。
为了解决这个问题,可以通过 user.get("gender", "默认值") 的方式获取 key, 当 key 不存在时,赋给一个默认值。
02defaultdict
采用 get 方法虽然从一定程度上解决了报错问题,但是如果有很多数据需要频繁去获取还是不够方便,比如要进行大量数据分析的时候。
这时候我们可以使用 defaultdict, 他提供一个位置参数和不定长参数。位置参数是设置默认值的工厂函数。内置的通常是常用的数据类型转化函数:int
str
list
tuple
dict 等等。
03defaultdict 参数说明defaultdict 第一个参数是默认值的工厂函数
后面的 **kw 是键值对, 也可以是整个字典,或者不加。
04工厂函数的几种形式
工厂函数可以是以下几种类型:内置数据转化函数
匿名函数, 匿名函数不需要传入值。比如 lambda : 3
自定义函数。自定义函数可以有参数,也可以不传参数。
匿名函数的形式:
也可以自己定义函数, 函数也不需要传递参数:
有时候如果需要指定某个业务赋一个默认值,另一个业务赋另一个默认值,由参数去控制,则可以在自定义函数当中加入参数。
05defaultdict 原理
defaultdict 访问不存在的 key 而不报错的原理是通过类当中的 __missing__ 方法控制,下面是一个简单版的自己定义的 defaultdict 类:
说明:本文为柠檬班雨泽老师原创