collections defaultdict(默认字典)
来源:互联网 发布:mac怎样切换输入法 编辑:程序博客网 时间:2024/05/16 09:56
class collections.default([default_factory[, ...]])
返回一个类字典对象。defaultdict是内置类型dict的子类。他重写了父的一个方法并且增加了一个可以的实例变量。余下的功能与字典的一样,在这里就不写文档了。
第一个参数为default_factory属性提供初始值;default_factory的默认值为None.余下的参数被视为dict构造器的参数包括关键字参数
defaultdict对象除了支持标准字典操作外,还支持下面的方法 __missing__(key)
- 如果default_factory属性为None,以key作为参数引发一个KeyError异常
- 如果default_factory不是None,这个方法会被调用为key提供一个默认值,这个值会被赋值给key,并且返回
- 当调用default_factory引发一个异常时,这个异常会被原封不动的传播
- 当调用dict的
__getitme__()
而需要的key没有被找到时,这个方法无论返回或引发什么都会被__getitem__()
原封不动的返回 - 注意这个
__missing__()
不会被任何操作调用除了__getitem()
。这代表着get()方法,会像正常的字典方法一样,返回默认的None而不是调用default_factory
defaultdict对象提供下面的实例变量:
这个属性用于__missing__()
方法。他初始化由第一个参数,当作构造器,如果第一个参数存在,如果不存在,会是None
defaultdict 的例子
使用list作为default_factory,他很容易的将一个以键值形式表现的序列分组成一个字典列表
>>> s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]>>> d = defaultdict(list)>>> for k, v in s:... d[k].append(v)...>>> d.items()[('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]
当每个key第一次被访问时,他们肯定没有在映射中:一个入口自动的被创建了使用default_factory函数返回一个空的列表。然后list.append()操作将值放入新的列表中。当key再次被访问时,查找工作正常(返回这个key的列表)然后list.append()操作为列表添加别外的值。这个技巧比等价的技艺(使用dict.setdefault())更简节,更快
>>> d = {}>>> for k, v in s:... d.setdefault(k, []).append(v)...>>> d.items()[('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]
将default_factory设置成int使defaultdict对于计数非常有用
>>> s = 'mississippi'>>> d = defaultdict(int)>>> for k in s:... d[k] += 1...>>> d.items()[('i', 4), ('p', 2), ('s', 4), ('m', 1)]
当一个字每第一次被访问时,这个字母在映射中不存在,因此default_factory函数调用int()提供一个默认的0作为count。然后自增操作计算每个字母出现的次数
int()函数总是返回0,因为他是常量函数的一个特殊的例子。一个更快更灵活的方式是创建一个常量函数(itertools.repeat() –可以提供任何常量,不仅仅是0)
>>> def constant_factory(value):... return itertools.repeat(value).next>>> d = defaultdict(constant_factory('<missing>'))>>> d.update(name='John', action='ran')>>> '%(name)s %(action)s to %(object)s' % d'John ran to <missing>'
设置default_factory为set使defaultdict构建集合字典非常有用
>>> 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)...>>> d.items()[('blue', set([2, 4])), ('red', set([1, 3]))]
- collections defaultdict(默认字典)
- python设置默认字典(setdefault collections.defaultdict)
- collections.defaultdict
- collections之defaultdict
- Python collections.defaultdict 笔记
- Python collections.defaultdict()
- python中collections 模块里的defaultdict()函数
- collections.defaultdict类的使用
- Python collections.defaultdict() 的使用
- python中defaultdict方法的使用【使字典默认的值为指定值】
- Python HackerRank|DefaultDict Tutorial(from collections import defaultdict)
- dict() 和collections.defaultdict的区别
- defaultdict与{}创建字典时的区别
- Python 3 collections.defaultdict() 与 dict的使用和区别
- Python collections.defaultdict() 与 dict的使用和区别
- Python collections.defaultdict()与dict的使用和区别
- Python的collections模块中defaultdict类型的用法
- Python collections.defaultdict() 与 dict的使用和区别
- android 动画基础
- java中使用jdbcTemplate的query方法举例与总结
- Android Multimedia框架总结(二十六)利用FFmpeg进行解码直播流
- IE和谷歌(火狐)浏览器兼容获取内部样式表和外部样式表的样式
- Servlet3.0的创建 &tomcat63342的问题
- collections defaultdict(默认字典)
- 306. Additive Number
- Redis笔记6:数据类型之哈希(Hash)
- 开始写博客
- UML类图
- mysql数据库中的范式理解
- 随笔2017-03-01
- WindowManager解析
- 2-SAT