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中的数据存储模块shelve的用法
Mar 03 Python
python安装Scrapy图文教程
Aug 14 Python
Python遍历某目录下的所有文件夹与文件路径
Mar 15 Python
python中的变量如何开辟内存
Jun 26 Python
Python3获取拉勾网招聘信息的方法实例
Apr 03 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
Apr 18 Python
python定时检测无响应进程并重启的实例代码
Apr 22 Python
PyCharm 创建指定版本的 Django(超详图解教程)
Jun 18 Python
python中seaborn包常用图形使用详解
Nov 25 Python
使用Python制作新型冠状病毒实时疫情图
Jan 28 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
Jan 29 Python
Django操作cookie的实现
May 26 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采用curl访问域名返回405 method not allowed提示的解决方法
2014/06/26 PHP
php文件下载处理方法分析
2015/04/22 PHP
JavaScript isPrototypeOf和hasOwnProperty使用区别
2010/03/04 Javascript
jquery插件制作 手风琴Panel效果实现
2012/08/17 Javascript
SeaJS入门教程系列之SeaJS介绍(一)
2014/03/03 Javascript
用JavaScript实现使用鼠标画线的示例代码
2014/08/19 Javascript
textarea不能通过maxlength属性来限制字数的解决方法
2014/09/01 Javascript
Javascript中的Callback方法浅析
2015/03/15 Javascript
利用jQuery和CSS将背景图片拉伸
2015/10/16 Javascript
基于Jquery代码实现手风琴菜单
2015/11/19 Javascript
七个不允许错过的jQuery小技巧
2015/12/21 Javascript
javascript+HTML5 Canvas绘制转盘抽奖
2020/05/16 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
2016/06/03 Javascript
基于js里调用函数时,函数名带括号和不带括号的区别
2016/07/28 Javascript
12306 刷票脚本及稳固刷票脚本(防挂)
2017/01/04 Javascript
Vue结合Video.js播放m3u8视频流的方法示例
2018/05/04 Javascript
ng-alain表单使用方式详解
2018/07/10 Javascript
vuejs前后端数据交互之从后端请求数据的实例
2018/08/11 Javascript
three.js实现炫酷的全景3D重力感应
2018/12/30 Javascript
微信小程序五子棋游戏的棋盘,重置,对弈实现方法【附demo源码下载】
2019/02/20 Javascript
解决vue侦听器watch,调用this时出现undefined的问题
2020/10/30 Javascript
Python使用xlrd模块操作Excel数据导入的方法
2015/05/26 Python
python3.6.3转化为win-exe文件发布的方法
2018/10/31 Python
python实现基于信息增益的决策树归纳
2018/12/18 Python
Python常用爬虫代码总结方便查询
2019/02/25 Python
利用python Selenium实现自动登陆京东签到领金币功能
2019/10/31 Python
python3实现简单飞机大战
2020/11/29 Python
详解CSS3 用border写 空心三角箭头 (两种写法)
2017/09/29 HTML / CSS
HTML+CSS+JavaScript实现图片3D展览的示例代码
2020/10/12 HTML / CSS
汽车检测与维修个人求职信
2013/09/24 职场文书
企业金融服务方案
2014/06/03 职场文书
2015年普法依法治理工作总结
2015/05/26 职场文书
试用期转正工作总结2015
2015/05/28 职场文书
创业计划书之旅游网站
2019/09/06 职场文书
Java实现二维数组和稀疏数组之间的转换
2021/06/27 Java/Android
人民币符号
2022/02/17 杂记