这里有新鲜出炉的 Python3 官方中文指南,程序狗速度看过来!
Python 是一种面向对象、解释型计算机程序设计语言,由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。Python 语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是 C/C++)很轻松地联结在一起。
这篇文章主要为大家详细介绍了 python 中 defaultdict 的用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
初识 defaultdict
之前在使用字典的时候, 用的比较随意, 只是简单的使用 dict.
然而这样在使用不存在的 key 的时候发生 KeyError 这样的一个报错, 这时候就该 defaultdict 登场了.
如何使用 defaultdict
可以这样
- from collections import defaultdict
- d1 = defaultdict(int)
或者这样
- import collections
- d1 = collections.defaultdict(int)
defaultdict 与 dict 实例化字典类型的区别
使用 defaultdict 任何未定义的 key 都会默认返回一个根据 method_factory 参数不同的默认值, 而相同情况下 dict() 会返回 KeyError.
比较下面代码:
- d1 = dict()
- d2 = defaultdict(list)
- print(d1['a'])
- print(d2['a'])
defaultdict 的构造
python 官方文档中对 defaultdict 的定义如下:
- class collections.defaultdict([default_factory[, ...]])
python 官方文档中对 defaultdict 的解释如下:
- defaultdic
- dict subclass that calls a factory function to supply missing values
default_factory 接收一个工厂函数作为参数, 例如 int str list set 等.
defaultdict 在 dict 的基础上添加了一个 missing(key) 方法, 在调用一个不存的 key 的时候, defaultdict 会调用__missing__, 返回一个根据 default_factory 参数的默认值, 所以不会返回 Keyerror.
Example
Example 1
- s = 'mississippi'
- d = defaultdict(int)
- for k in s:
- d[k] += 1
- print(d)
Example 2
- s = [('red', 1), ('blue', 2), ('red', 3), ('blue', 4), ('red', 1), ('blue', 4)]
- d = defaultdict(set)
- for k, v in s:
- d[k].add(v)
- print(d)
来源: http://www.phperz.com/article/17/0627/336414.html