Python标准库defaultdict模块使用示例


Posted in Python onApril 28, 2015

Python标准库中collections对集合类型的数据结构进行了很多拓展操作,这些操作在我们使用集合的时候会带来很多的便利,多看看很有好处。
defaultdict是其中一个方法,就是给字典value元素添加默认类型,之前看到过但是没注意怎么使用,今天特地瞅了瞅。

首先是各大文章介绍的第一个例子:

import collections as coll  

  

def default_factory():  

    return 'default value'  

  

d = coll.defaultdict(default_factory, foo='bar')  

print 'd:',d  

print 'foo=>', d['foo']  

print 'foo=>', d['bar']   #key为'bar'的元素不存在,会有一个默认值 

输出结果是这样的:
d: defaultdict(<function default_factory at 0x022E6E70>, {'foo': 'bar'})  

foo=> bar  

foo=> default value 

结论:这里可以看到,当我们取字典中一个没有的key的时候就会自动根据 default_factory生成一个value,类似于 d.get('bar','default value')

一个对比的例子:
如果一个字典中有个map的value是一个set,往这个set连续添加两个元素,使用原始的dict是这样的

dict_set1 = {}  

#如果不知道这个字段中key有没有,需要先判断  

if 'key' not in dict_set1:  

    dict_set1['key'] = set()  

dict_set1['key'].add('111')  

dict_set1['key'].add('000')  

print dict_set1 

如果使用defaultdict就是这样的
dict_set = coll.defaultdict(set)  

dict_set['key'].add('000')  

dict_set['key'].add('111')  

print dict_set

好处就是不需要做set的初始化这个判断了。

两个使用的小案例

ss = '1111222233334444'  

dict_int = coll.defaultdict(int)  

for s in ss:  

    dict_int[s] += 1  

print dict_int  

  

''''' 

官方文档的这个例子就能看到这种写法的简洁了 
https://docs.python.org/2/library/collections.html#collections.defaultdict 

>>> 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])] 

''' 

当我们做这种带有统计性质的数据操作时候,这个对象很好用。
Python 相关文章推荐
python的迭代器与生成器实例详解
Jul 16 Python
Python实现的简单文件传输服务器和客户端
Apr 08 Python
unittest+coverage单元测试代码覆盖操作实例详解
Apr 04 Python
对python中类的继承与方法重写介绍
Jan 20 Python
python networkx 包绘制复杂网络关系图的实现
Jul 10 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
Aug 02 Python
Python传递参数的多种方式(小结)
Sep 18 Python
pytorch 彩色图像转灰度图像实例
Jan 13 Python
解决Python import docx出错DLL load failed的问题
Feb 13 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
Apr 30 Python
Python实时监控网站浏览记录实现过程详解
Jul 14 Python
python人工智能human learn绘图可创建机器学习模型
Nov 23 Python
Python自动重试HTTP连接装饰器
Apr 28 #Python
Python2.6版本中实现字典推导 PEP 274(Dict Comprehensions)
Apr 28 #Python
Python中输出ASCII大文字、艺术字、字符字小技巧
Apr 28 #Python
Python合并多个装饰器小技巧
Apr 28 #Python
查看Python安装路径以及安装包路径小技巧
Apr 28 #Python
Python中获取对象信息的方法
Apr 27 #Python
用实例解释Python中的继承和多态的概念
Apr 27 #Python
You might like
PHP读取RSS(Feed)简单实例
2014/06/12 PHP
Yii中Model(模型)的创建及使用方法
2015/12/28 PHP
PHP开发的微信现金红包功能示例
2017/06/29 PHP
PHP 实现手机端APP支付宝支付功能
2018/06/07 PHP
Ajax请求PHP后台接口返回信息的实例代码
2018/08/21 PHP
JavaScript 联动的无限级封装类,数据采用非Ajax方式,随意添加联动
2010/06/29 Javascript
jquery插件制作简单示例说明
2012/02/03 Javascript
分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容
2012/04/20 Javascript
jQuery 开发者应该注意的9个错误
2012/05/03 Javascript
JavaScript高级程序设计(第3版)学习笔记4 js运算符和操作符
2012/10/11 Javascript
NodeJS Web应用监听sock文件实例
2015/02/18 NodeJs
详解Javascript继承的实现
2016/03/25 Javascript
jQuery购物网页经典制作案例
2016/08/19 Javascript
Easyui的组合框的取值与赋值
2016/10/28 Javascript
移动端日期插件Mobiscroll.js使用详解
2016/12/19 Javascript
javascript中的隐式调用
2018/02/10 Javascript
解决修复npm安装全局模块权限的问题
2018/05/17 Javascript
JavaScript使用prototype原型实现的封装继承多态示例
2018/08/31 Javascript
ant-design-vue 实现表格内部字段验证功能
2019/12/16 Javascript
Python 3中的yield from语法详解
2017/01/18 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
2018/06/14 Python
Python OpenCV实现视频分帧
2019/06/01 Python
python tkinter组件使用详解
2019/09/16 Python
Python模块汇总(常用第三方库)
2019/10/07 Python
tensorflow实现打印ckpt模型保存下的变量名称及变量值
2020/01/04 Python
python爬虫爬取网页数据并解析数据
2020/09/18 Python
adidas旗下高尔夫装备供应商:TaylorMade Golf(泰勒梅高尔夫)
2016/08/28 全球购物
便携式太阳能系统的创新者:GOAL ZERO
2018/02/04 全球购物
ProForm英国站点:健身房和健身器材网上商店
2019/06/05 全球购物
捷克家电和家具购物网站:OKAY.cz
2020/07/23 全球购物
刚毕业大学生自荐信范文
2014/02/20 职场文书
龙猫观后感
2015/06/09 职场文书
2015秋季田径运动会广播稿
2015/08/19 职场文书
2016年幼儿园教师师德承诺书
2016/03/25 职场文书
浅谈react useEffect闭包的坑
2021/06/08 Javascript
Redis官方可视化工具RedisInsight安装使用教程
2022/04/19 Redis