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使用稀疏矩阵节省内存实例
Jun 27 Python
Python中第三方库Requests库的高级用法详解
Mar 12 Python
Python3中的json模块使用详解
May 05 Python
在python里从协程返回一个值的示例
Feb 19 Python
Python2.7版os.path.isdir中文路径返回false的解决方法
Jun 21 Python
python操作excel让工作自动化
Aug 09 Python
pyenv与virtualenv安装实现python多版本多项目管理
Aug 17 Python
python利用dlib获取人脸的68个landmark
Nov 27 Python
Python进阶之迭代器与迭代器切片教程
Jan 29 Python
Python在终端通过pip安装好包以后在Pycharm中依然无法使用的问题(三种解决方案)
Mar 10 Python
Python替换NumPy数组中大于某个值的所有元素实例
Jun 08 Python
Python常驻任务实现接收外界参数代码解析
Jul 21 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
IIS6的PHP最佳配置方法
2007/03/19 PHP
php中cookie的作用域
2008/03/27 PHP
PHP XML操作类DOMDocument
2009/12/16 PHP
支持中文、字母、数字的PHP验证码
2015/05/04 PHP
WordPres对前端页面调试时的两个PHP函数使用小技巧
2015/12/22 PHP
PHP加密解密实例分析
2015/12/25 PHP
浅谈PHP中的Trait使用方法
2019/03/22 PHP
input禁止键盘及中文输入,但可以点击
2014/02/13 Javascript
关于JS变量和作用域详解
2016/07/28 Javascript
浅谈jQuery添加的HTML,JS失效的问题
2016/10/05 Javascript
JS中传递参数的几种不同方法比较
2017/01/20 Javascript
canvas绘制多边形
2017/02/24 Javascript
ES6新特性之模块Module用法详解
2017/04/01 Javascript
jQuery Validate表单验证插件实现代码
2017/06/08 jQuery
js数组常用最重要的方法
2018/02/04 Javascript
在angular 6中使用 less 的实例代码
2018/05/13 Javascript
JS+CSS3实现的简易钟表效果示例
2019/04/13 Javascript
微信小程序云开发之使用云数据库
2019/05/17 Javascript
vue实现自定义多选按钮
2020/07/16 Javascript
python简单实现刷新智联简历
2016/03/30 Python
python3.7.0的安装步骤
2018/08/27 Python
python使用装饰器作日志处理的方法
2019/07/11 Python
Python如何筛选序列中的元素的方法实现
2019/07/15 Python
python 检测nginx服务邮件报警的脚本
2020/12/31 Python
Python爬取网站图片并保存的实现示例
2021/02/26 Python
编写html5时调试发现脚本php等网页js、css等失效
2013/12/31 HTML / CSS
UGG英国官方网站:UGG UK
2018/02/08 全球购物
澳大利亚和新西兰最大的在线旅行社之一:Aunt Betty
2019/08/07 全球购物
简历自我评价怎么写好呢?
2014/01/04 职场文书
法律专业应届生自荐信范文
2014/01/06 职场文书
护理专科毕业生自荐书范文
2014/02/19 职场文书
地质灾害防治方案
2014/05/14 职场文书
运动会加油稿30字
2015/07/21 职场文书
2016小学教师读书心得体会
2016/01/13 职场文书
2016年国庆节67周年活动总结
2016/04/01 职场文书
十大经典日本动漫排行榜 海贼王第三,犬夜叉仅第八
2022/03/18 日漫