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 相关文章推荐
使用wxpython实现的一个简单图片浏览器实例
Jul 10 Python
python版本的读写锁操作方法
Apr 25 Python
Python 提取dict转换为xml/json/table并输出的实现代码
Aug 28 Python
Python有序字典简单实现方法示例
Sep 28 Python
django站点管理详解
Dec 12 Python
python3利用Dlib19.7实现人脸68个特征点标定
Feb 26 Python
Pycharm无法显示动态图片的解决方法
Oct 28 Python
python+selenium实现QQ邮箱自动发送功能
Jan 23 Python
Python求离散序列导数的示例
Jul 10 Python
Django框架组成结构、基本概念与文件功能分析
Jul 30 Python
python django生成迁移文件的实例
Aug 31 Python
django之从html页面表单获取输入的数据实例
Mar 16 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
ThinkPHP处理Ajax返回的方法
2014/11/22 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
2018/02/07 PHP
Javascript 复制数组实现代码
2009/11/26 Javascript
基于jquery的无缝循环新闻列表插件
2011/03/07 Javascript
javascript 正则表达式相关应介绍
2012/11/27 Javascript
js去空格技巧分别去字符串前后、左右空格
2013/10/21 Javascript
open 动态修改img的onclick事件示例代码
2013/11/13 Javascript
JavaScript运行机制之事件循环(Event Loop)详解
2014/10/10 Javascript
JS数组(Array)处理函数整理
2014/12/07 Javascript
基于jQuery实现最基本的淡入淡出效果实例
2015/02/02 Javascript
JavaScript使用FileSystemObject对象写入文本文件内容的方法
2015/08/05 Javascript
javascript随机抽取0-100之间不重复的10个数
2016/02/25 Javascript
javascript先序遍历DOM树的方法
2016/02/27 Javascript
举例说明JavaScript中的实例对象与原型对象
2016/03/11 Javascript
Bootstrap每天必学之折叠
2016/04/12 Javascript
JavaScript中访问id对象 属性的方式访问属性(实例代码)
2016/10/28 Javascript
vue监听滚动事件实现滚动监听
2017/04/11 Javascript
angular内置provider之$compileProvider详解
2017/09/27 Javascript
vue移动端监听滚动条高度的实现方法
2018/09/03 Javascript
CryptoJS中AES实现前后端通用加解密技术
2018/12/18 Javascript
微信小程序后端(java)开发流程的详细步骤
2019/11/13 Javascript
Python实现豆瓣图片下载的方法
2015/05/25 Python
python3实现跳一跳点击跳跃
2018/01/08 Python
python中单下划线_的常见用法总结
2018/07/10 Python
python利用百度AI实现文字识别功能
2018/11/27 Python
Python3简单爬虫抓取网页图片代码实例
2019/08/26 Python
Python PyInstaller安装和使用教程详解
2020/01/08 Python
使用jupyter notebook运行python和R的步骤
2020/08/13 Python
Window10上Tensorflow的安装(CPU和GPU版本)
2020/12/15 Python
HTML5获取当前地理位置并在百度地图上展示的实例
2020/07/10 HTML / CSS
广播体操比赛口号
2014/06/10 职场文书
中秋手机店促销方案
2014/06/16 职场文书
2014年少先队工作总结
2014/12/03 职场文书
2015年乡镇纪检工作总结
2015/04/22 职场文书
代理词怎么写
2015/05/25 职场文书
教师节领导致辞
2015/07/29 职场文书