你会因为什么原因使用defaultdict?defaultdict和dict的区别仅仅是当key不存在的时候不会返回错误吗?
defaultdict接受一个工厂函数作为参数,如下来构造:
defaultdict( factory_function)
这个factory_function可以是list、set、str等等,作用是当key不存在时,返回的是工厂函数的默认值,比如list对应[ ],str对应的是空字符串,set对应set( ),int对应0等等。
1.初级玩家:
from collections import defaultdict
dict1 = defaultdict(int)
2.普通玩家:
def empty(): return []
d = defaultdict(empty)
print(d["key"]) []
print(d) defaultdict(<type 'list'>, {"key": []})
3.高级玩家:
d = defaultdict(lambda: [])
print(d["key"])
来个应用场景说明吧:
比如统计某个单词出现的次数,并在counts字典中作记录。单词每出现一次,在counts相对应的键所存的值数字加1。如果是dict,需要先判断key是否存在,不存在的key得初始化一个值。看看defaultdict是怎么实现的
from collections import defaultdict
words= ('a', 'b', 'c', 'a','a', 'a', 'b', 'd')
counts = defaultdict(lambda: 0)
for word in words:
counts[word ] += 1
{'a': 4, 'b': 2, 'c': 1, 'd': 1}