python中defaultdict的用法详解


Posted in Python onJune 07, 2017

初识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)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中global用法实例分析
Apr 30 Python
Python读取文件内容的三种常用方式及效率比较
Oct 07 Python
python绘制双柱形图代码实例
Dec 14 Python
通过Py2exe将自己的python程序打包成.exe/.app的方法
May 26 Python
Python迭代器与生成器用法实例分析
Jul 09 Python
Python pycharm 同时加载多个项目的方法
Jan 17 Python
Python除法之传统除法、Floor除法及真除法实例详解
May 23 Python
Python 用matplotlib画以时间日期为x轴的图像
Aug 06 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
Aug 13 Python
python-OpenCV 实现将数组转换成灰度图和彩图
Jan 09 Python
python实现PDF中表格转化为Excel的方法
Jun 16 Python
python爬虫搭配起Bilibili唧唧的流程分析
Dec 01 Python
浅谈numpy中linspace的用法 (等差数列创建函数)
Jun 07 #Python
python面向对象_详谈类的继承与方法的重载
Jun 07 #Python
windows下python连接oracle数据库
Jun 07 #Python
Python使用剪切板的方法
Jun 06 #Python
Python实现单词翻译功能
Jun 06 #Python
Python实现Smtplib发送带有各种附件的邮件实例
Jun 05 #Python
python实现的正则表达式功能入门教程【经典】
Jun 05 #Python
You might like
在Debian系统下配置LNMP的教程
2015/07/09 PHP
JQuery中getJSON的使用方法
2010/12/13 Javascript
iframe子父页面调用js函数示例
2013/11/07 Javascript
JavaScript中的关联数组问题
2015/03/04 Javascript
JavaScript获得表单target属性的方法
2015/04/02 Javascript
解决jQuery uploadify在非IE核心浏览器下无法上传
2015/08/05 Javascript
jQuery实现选项卡切换效果简单演示
2015/12/09 Javascript
javascirpt实现2个iframe之间传值的方法
2016/06/30 Javascript
jQuery  ready方法实现原理详解
2016/10/19 Javascript
JS解决移动web开发手机输入框弹出的问题
2017/03/31 Javascript
AngularJs 延时器、计时器实例代码
2017/09/16 Javascript
简单谈谈vue的过渡动画(推荐)
2017/10/11 Javascript
angularjs实现天气预报功能
2020/06/16 Javascript
JS字典Dictionary类定义与用法示例
2019/02/01 Javascript
微信小程序动态添加view组件的实例代码
2019/05/23 Javascript
Angular中innerHTML标签的样式不起作用的原因解析
2019/06/18 Javascript
微信小程序获取复选框全选反选选中的值(实例代码)
2019/12/17 Javascript
js this 绑定机制深入详解
2020/04/30 Javascript
使用setup.py安装python包和卸载python包的方法
2013/11/27 Python
Python的collections模块中namedtuple结构使用示例
2016/07/07 Python
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
2018/02/18 Python
python issubclass 和 isinstance函数
2019/07/25 Python
Python实现朴素贝叶斯的学习与分类过程解析
2019/08/24 Python
浅析Python 中的 WSGI 接口和 WSGI 服务的运行
2020/12/09 Python
Mountain Warehouse澳大利亚官网:欧洲家庭户外品牌倡导者
2016/11/20 全球购物
英国高级百货公司:Harvey Nichols
2017/01/29 全球购物
英国网上自行车商店:Tredz Bikes
2019/10/29 全球购物
Michael Kors英国官网:美国奢侈品品牌
2019/11/13 全球购物
加拿大品牌鞋包连锁店:Little Burgundy
2021/02/28 全球购物
师范生实习的个人自我鉴定
2013/10/20 职场文书
英语专业应届生求职信范文
2013/11/15 职场文书
优秀员工个人的自我评价
2013/11/29 职场文书
工作睡觉检讨书
2014/02/25 职场文书
竞聘自述材料
2014/08/25 职场文书
迁徙的鸟观后感
2015/06/09 职场文书
解决MySQL添加新用户-ERROR 1045 (28000)的问题
2022/03/03 MySQL