初识defaultdict
之前在使用字典的时候, 用的比较随意, 只是简单的使用dict.
然而这样在使用不存在的key的时候发生KeyError这样的一个报错, 这时候就该defaultdict登场了.
如何使用defaultdict
可以这样
from collections import defaultdict
d1 = defaultdict(int)
或者这样
import collections
d1 = collections.defaultdict(int)
defaultdict的源码
如下:
class collections.defaultdict([default_factory) # 一个参数,确定字典值的默认类型
python官方文档中对defaultdict的解释如下:
default_factory 接收一个工厂函数作为参数, 例如int str list set等.
defaultdict在dict的基础上添加了一个missing(key)方法, 在调用一个不存的key的时候, defaultdict会调用__missing__, 返回一个根据default_factory参数的默认值, 所以不会返回Keyerror.
defaultdict与dict实例化字典类型的区别**
使用defaultdict任何未定义的key都会默认返回一个根据method_factory参数不同的默认值, 而相同情况下dict()会返回KeyError.
比较下面代码:
d1 = dict()
d2 = defaultdict(list)
print(d1['a']) # 直接报错keyErorr
print(d2['a']) # 输出 []
# 因为defaultdict里传的参数为list,所以默认值为一个空列表,
# 如果传的参数是int则默认值为0,如果传的参数是str会输出一个默认的空字符串