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登录Dr.com思路以及代码分享
Jun 25 Python
Python中使用platform模块获取系统信息的用法教程
Jul 08 Python
python 获取list特定元素下标的实例讲解
Apr 09 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
Jul 09 Python
利用python实现在微信群刷屏的方法
Feb 21 Python
python中列表的切片与修改知识点总结
Jul 23 Python
python实现屏保程序(适用于背单词)
Jul 30 Python
浅谈python3 构造函数和析构函数
Mar 12 Python
Python列表去重复项的N种方法(实例代码)
May 12 Python
Keras实现将两个模型连接到一起
May 23 Python
python 图像增强算法实现详解
Jan 24 Python
Appium中scroll和drag_and_drop根据元素位置滑动
Feb 15 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使用DirectoryIterator显示下拉文件列表的方法
2015/03/13 PHP
PHP实现获取并生成数据库字典的方法
2016/05/04 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
2018/11/30 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
2020/03/30 PHP
javascript document.referrer 用法
2009/04/30 Javascript
javascript 实现字符串反转的三种方法
2013/11/23 Javascript
表格奇偶行设置不同颜色的核心JS代码
2013/12/24 Javascript
jQuery中$.extend()用法实例
2015/06/24 Javascript
jQuery中on绑定事件后引发的事件冒泡问题如何解决
2016/05/25 Javascript
jQuery中的一些小技巧
2017/01/18 Javascript
js操作浏览器的参数方法
2017/01/21 Javascript
微信小程序 跳转方式总结
2017/04/20 Javascript
详解Angular Reactive Form 表单验证
2017/07/06 Javascript
微信小程序在ios下Echarts图表不能滑动的问题解决
2019/07/10 Javascript
详解Python中的Cookie模块使用
2015/07/06 Python
python 网络爬虫初级实现代码
2016/02/27 Python
Python利用IPython提高开发效率
2016/08/10 Python
Python操作Excel之xlsx文件
2017/03/24 Python
Django框架设置cookies与获取cookies操作详解
2019/05/27 Python
Django的性能优化实现解析
2019/07/30 Python
基于python实现语音录入识别代码实例
2020/01/17 Python
Python实现转换图片背景颜色代码
2020/04/30 Python
解决pytorch 保存模型遇到的问题
2021/03/03 Python
HTML4和HTML5之间除了相似以外的10个主要不同
2012/12/13 HTML / CSS
Giglio俄罗斯奢侈品购物网:男士、女士、儿童高级时装
2018/07/27 全球购物
群胜软件Java笔试题
2012/09/29 面试题
房地产融资计划书
2014/01/10 职场文书
酒店端午节促销方案
2014/02/18 职场文书
高校教师自荐信范文
2014/03/13 职场文书
土建专业毕业生自荐书
2014/07/04 职场文书
小学教师师德师风演讲稿
2014/08/22 职场文书
教师自我剖析材料范文
2014/09/30 职场文书
给老婆的保证书
2015/01/16 职场文书
办公室岗位职责
2015/02/04 职场文书
教师节祝酒词
2015/08/11 职场文书
Go语言实现Base64、Base58编码与解码
2021/07/26 Golang