defaultdict是collection中的一个类。Python的官方定义如下:
class collections.defaultdict([default_factory[, ...]])
官方的解释如下:
defaultdic
dict subclass that calls a factory function to supply missing values
意思就是defaultdict作为dict的子类,当字典中不存在某个键值时,会为该键(字典中不存在该键名)创造一个工厂函数(default_facory,例如 int,str,list ,set等)类型的默认值。其与普通字典的区别如下:
defaultdict在dict的基础上添加了一个missing(key)方法, 在调用一个不存的key的时候, defaultdict会调用__missing__, 返回一个根据default_factory参数的默认值, 所以不会返回
Keyerror.
例如:
from collections import defaultdict
s = 'mississippi'
d = defaultdict(int)
for k in s:
d[k] += 1
print(d)
运行结果如下:
defaultdict(<class 'int'>, {'m': 1, 'i': 4, 's': 4, 'p': 2})
在这个例子当中,调用的工厂函数为int,其默认值为0。当利用defaultdict创建某个键时,会自动为该字典添加默认值0作为键值。
from collections import defaultdict
s = 'mississippi'
d = defaultdict(int)
for k in s:
print(d[k])
print(d.items())
运行结果如下:
0
0
0
0
0
0
0
0
0
0
0
dict_items([('m', 0), ('i', 0), ('s', 0), ('p', 0)])
代码中:初次执行print(d[k])时,如果k不在为字典d中,则会为字典添加键值对k:0,当再次执行
print(d[k])时,由于字典d中已经存在同名的键名,所以不会在进行新的添加。
本文详细介绍了Python collections模块中的defaultdict类,解释了它是如何在字典中为不存在的键提供默认值,通过示例展示了defaultdict在计数和统计场景中的应用。
1294

被折叠的 条评论
为什么被折叠?



