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模块顶层运行的代码引起的一个Bug
Jul 04 Python
Python脚本文件打包成可执行文件的方法
Jun 02 Python
python 读写、创建 文件的方法(必看)
Sep 12 Python
python面向对象入门教程之从代码复用开始(一)
Dec 11 Python
Django的models模型的具体使用
Jul 15 Python
python向图片里添加文字
Nov 26 Python
python数据爬下来保存的位置
Feb 17 Python
Python内置方法和属性应用:反射和单例(推荐)
Jun 19 Python
python 读取yaml文件的两种方法(在unittest中使用)
Dec 01 Python
python字典与json转换的方法总结
Dec 28 Python
如何用Django处理gzip数据流
Jan 29 Python
python opencv实现图像配准与比较
Feb 09 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获取远程图片并保存到本地的方法
2015/05/12 PHP
使用apply方法处理数组的三个技巧[译]
2012/09/20 Javascript
jQuery 获取/设置/删除DOM元素的属性以a元素为例
2014/05/23 Javascript
JS数字抽奖游戏实现方法
2015/05/04 Javascript
js实现的简洁网页滑动tab菜单效果代码
2015/08/24 Javascript
AngularJS中的Directive实现延迟加载
2016/01/25 Javascript
jQuery实现字符串全部替换的方法
2016/12/12 Javascript
jquery mobile移动端幻灯片滑动切换效果
2020/04/15 Javascript
老生常谈js中的MVC
2017/07/25 Javascript
JS对象序列化成json数据和json数据转化为JS对象的代码
2017/08/23 Javascript
微信通过页面(H5)直接打开本地app的解决方法
2017/09/09 Javascript
利用jquery如何从json中读取数据追加到html中
2017/12/01 jQuery
前后端如何实现登录token拦截校验详解
2018/09/03 Javascript
小程序显示弹窗时禁止下层的内容滚动实现方法
2019/03/20 Javascript
p5.js临摹旋转爱心
2019/10/23 Javascript
vue实现短信验证码登录功能(流程详解)
2019/12/10 Javascript
js中延迟加载和预加载的具体使用
2021/01/14 Javascript
[00:15]TI9观赛名额抽取
2019/07/10 DOTA
[59:53]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第二场 3月6日
2021/03/11 DOTA
Python for Informatics 第11章 正则表达式(一)
2016/04/21 Python
Python实现完整的事务操作示例
2017/06/20 Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
2018/01/04 Python
python增加图像对比度的方法
2019/07/12 Python
简单的Python调度器Schedule详解
2019/08/30 Python
利用python实现逐步回归
2020/02/24 Python
Python numpy多维数组实现原理详解
2020/03/10 Python
python 操作mysql数据中fetchone()和fetchall()方式
2020/05/15 Python
CSS3系列之3D制作方法案例
2017/08/14 HTML / CSS
解释一下ArrayList Vector和LinkedList的实现和区别
2013/04/26 面试题
触发器(trigger)的功能都有哪些?写出一个触发器的例子
2012/09/17 面试题
超市中秋节促销方案
2014/03/21 职场文书
纪念九一八事变演讲稿:勿忘国耻
2014/09/14 职场文书
2014小学语文教学工作总结
2014/12/17 职场文书
人事局接收函
2015/01/31 职场文书
教师求职自荐信
2015/03/26 职场文书
幼儿园毕业典礼园长致辞
2015/07/29 职场文书