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编写百度贴吧的简单爬虫
Apr 02 Python
python实现自动更换ip的方法
May 05 Python
简介二分查找算法与相关的Python实现示例
Aug 26 Python
python中copy()与deepcopy()的区别小结
Aug 03 Python
对Python捕获控制台输出流的方法详解
Jan 07 Python
Python函数的默认参数设计示例详解
Dec 01 Python
Python Gluon参数和模块命名操作教程
Dec 18 Python
Python ArgumentParse的subparser用法说明
Apr 20 Python
使用Python防止SQL注入攻击的实现示例
May 21 Python
python之pygame模块实现飞机大战完整代码
Nov 29 Python
python中time包实例详解
Feb 02 Python
python爬取2021猫眼票房字体加密实例
Feb 19 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
PHP下几种删除目录的方法总结
2007/08/19 PHP
PHP中static关键字原理的学习研究分析
2011/07/18 PHP
使用PHP获取汉字的拼音(全部与首字母)
2013/06/27 PHP
php中call_user_func函数使用注意事项
2014/11/21 PHP
PHP变量的作用范围实例讲解
2020/12/22 PHP
javascript利用初始化数据装配模版的实现代码
2010/11/17 Javascript
jcrop基本参数一览
2013/07/16 Javascript
浅谈javascript语法和定时函数
2015/05/03 Javascript
纯javascript判断查询日期是否为有效日期
2015/08/24 Javascript
JS实现的表头列头固定页面功能示例
2017/01/10 Javascript
React Router基础使用
2017/01/17 Javascript
JavaScript瀑布流布局实现代码
2017/05/06 Javascript
js图片上传的封装代码
2017/08/01 Javascript
jQuery实现简单日期格式化功能示例
2017/09/19 jQuery
js时间戳与日期格式之间转换详解
2017/12/11 Javascript
node thread.sleep实现示例
2018/06/20 Javascript
JavaScript函数的4种调用方法实例分析
2019/03/05 Javascript
javascript数组去重方法总结(推荐)
2019/03/20 Javascript
JavaScript 截取字符串代码实例
2019/09/05 Javascript
微信小程序列表时间戳转换实现过程解析
2019/10/12 Javascript
JavaScript如何实现监听键盘输入和鼠标监点击
2020/07/20 Javascript
javascript实现智能手环时间显示
2020/09/18 Javascript
详解vue之自行实现派发与广播(dispatch与broadcast)
2021/01/19 Vue.js
Python基于Tkinter的HelloWorld入门实例
2015/06/17 Python
Python中循环引用(import)失败的解决方法
2018/04/22 Python
在python中利用numpy求解多项式以及多项式拟合的方法
2019/07/03 Python
python实现交并比IOU教程
2020/04/16 Python
CSS3的Flexbox布局的简明入门指南
2016/04/08 HTML / CSS
IE支持HTML5的解决方法
2009/10/20 HTML / CSS
学生个人的自我评价分享
2013/11/05 职场文书
小学数学国培感言
2014/03/10 职场文书
《将心比心》教学反思
2014/04/08 职场文书
意向书范本
2014/07/29 职场文书
2014年秋季开学典礼致辞
2014/08/02 职场文书
2015年打非治违工作总结
2015/04/02 职场文书
教你用eclipse连接mysql数据库
2021/04/22 MySQL