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 相关文章推荐
12步教你理解Python装饰器
Feb 25 Python
详解python的几种标准输出重定向方式
Aug 15 Python
Python存取XML的常见方法实例分析
Mar 21 Python
Python tkinter实现的图片移动碰撞动画效果【附源码下载】
Jan 04 Python
Python建立Map写Excel表实例解析
Jan 17 Python
python实现隐马尔科夫模型HMM
Mar 25 Python
使用TensorFlow实现简单线性回归模型
Jul 19 Python
关于PyTorch 自动求导机制详解
Aug 18 Python
Python函数中的可变长参数详解
Sep 12 Python
python爬虫开发之Request模块从安装到详细使用方法与实例全解
Mar 09 Python
Windows 下更改 jupyterlab 默认启动位置的教程详解
May 18 Python
Python OpenCV超详细讲解读取图像视频和网络摄像头
Apr 02 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 $_SERVER当前完整url的写法
2009/11/12 PHP
php array_push()数组函数:将一个或多个单元压入数组的末尾(入栈)
2011/07/12 PHP
解析strtr函数的效率问题
2013/06/26 PHP
PHP中exec函数和shell_exec函数的区别
2014/08/20 PHP
CodeIgniter扩展核心类实例详解
2016/01/20 PHP
php实现session共享的实例方法
2019/09/19 PHP
动态改变textbox的宽高的js
2006/10/26 Javascript
javascript面向对象特性代码实例
2014/06/12 Javascript
JavaScript判断undefined类型的正确方法
2015/06/30 Javascript
深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
2015/12/01 Javascript
解析JavaScript面向对象概念中的Object类型与作用域
2016/05/10 Javascript
基于javascript实现表格的简单操作
2016/05/21 Javascript
15款最好的Bootstrap在线编辑器
2016/08/03 Javascript
jQuery实现手势解锁密码特效
2017/08/14 jQuery
详解angularjs4部署文件过大解决过程
2018/12/05 Javascript
基于Node的Axure文件在线预览的实现代码
2019/08/28 Javascript
vue移动端模态框(可传参)的实现
2019/11/20 Javascript
Python时间模块datetime、time、calendar的使用方法
2016/01/13 Python
Python实现聊天机器人的示例代码
2018/07/09 Python
pycharm打开命令行或Terminal的方法
2019/01/16 Python
Python-numpy实现灰度图像的分块和合并方式
2020/01/09 Python
spyder 在控制台(console)执行python文件,debug python程序方式
2020/04/20 Python
浅析Python中字符串的intern机制
2020/10/03 Python
pytorch学习教程之自定义数据集
2020/11/10 Python
详解python日志输出使用配置文件格式
2021/02/10 Python
英国女性时尚精品店:THE DRESSING ROOM
2018/05/23 全球购物
酒店采购员岗位职责
2014/03/14 职场文书
职业生涯规划书结束语
2014/04/15 职场文书
教师正风肃纪剖析材料
2014/10/20 职场文书
护理见习报告范文
2014/11/03 职场文书
党的群众路线教育实践活动心得体会(医院)
2014/11/03 职场文书
干货:如何写好工作总结报告!
2019/05/10 职场文书
Python网络编程之ZeroMQ知识总结
2021/04/25 Python
python 中的@运算符使用
2021/05/26 Python
JS 基本概念详细介绍
2021/10/16 Javascript
pandas进行数据输入和输出的方法详解
2022/03/23 Python