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读写excel的方法
Nov 18 Python
在Django的URLconf中使用命名组的方法
Jul 18 Python
Python中装饰器高级用法详解
Dec 25 Python
Python八大常见排序算法定义、实现及时间消耗效率分析
Apr 27 Python
Python爬取数据保存为Json格式的代码示例
Apr 09 Python
python提取log文件内容并画出图表
Jul 08 Python
详解Django模版中加载静态文件配置方法
Jul 21 Python
用Cython加速Python到“起飞”(推荐)
Aug 01 Python
python如何获取apk的packagename和activity
Jan 10 Python
python中如何打包用户自定义模块
Sep 23 Python
详解Selenium 元素定位和WebDriver常用方法
Dec 04 Python
健身房被搭讪?用python写了个小米计时器助人为乐
Jun 08 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读取目录下所有文件的代码
2008/01/07 PHP
不用mod_rewrite直接用php实现伪静态化页面代码
2008/10/04 PHP
PHP IDE phpstorm 常用快捷键
2015/05/18 PHP
javascript读取xml
2006/11/04 Javascript
javascript 时间比较实现代码
2009/10/28 Javascript
jquery实现的带缩略图的焦点图片切换(自动播放/响应鼠标动作)
2013/01/23 Javascript
详解JavaScript函数绑定
2013/08/18 Javascript
常用的几段javascript代码分享
2014/03/25 Javascript
jQuery 中国省市两级联动选择附图
2014/05/14 Javascript
js实现的标题栏新消息闪烁提示效果
2014/06/06 Javascript
浅析Node.js查找字符串功能
2014/09/03 Javascript
跟我学习javascript的全局变量
2015/11/16 Javascript
js传值后台中文出现乱码的解决方法
2016/06/30 Javascript
JS常见疑难点分析之match,charAt,charCodeAt,map,search用法分析
2016/12/25 Javascript
使用Math.max,Math.min获取数组中的最值实例
2017/04/25 Javascript
详解ES6中的代理模式——Proxy
2018/01/08 Javascript
React组件中的this的具体使用
2018/02/28 Javascript
js 实现在2d平面上画8的方法
2018/10/10 Javascript
BootStrap modal实现拖拽功能
2018/12/01 Javascript
JS拖拽排序插件Sortable.js用法实例分析
2019/02/20 Javascript
vue-cli 3.x配置跨域代理的实现方法
2019/04/12 Javascript
pandas求两个表格不相交的集合方法
2018/12/08 Python
python交互模式下输入换行/输入多行命令的方法
2019/07/02 Python
python实现随机加减法生成器
2020/02/24 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
2021/03/03 Python
大一自我鉴定范文
2013/12/27 职场文书
写演讲稿所需要注意的4个条件
2014/01/09 职场文书
大学考试作弊检讨书
2014/01/30 职场文书
教师先进工作者事迹材料
2014/05/01 职场文书
群众路线批评与自我批评发言稿
2014/10/16 职场文书
2014年房地产个人工作总结
2014/12/20 职场文书
2016年离婚协议书范文
2016/03/18 职场文书
Golang中interface{}转为数组的操作
2021/04/30 Golang
pytorch中的numel函数用法说明
2021/05/13 Python
matlab xlabel位置的设置方式
2021/05/21 Python
TypeScript中条件类型精读与实践记录
2021/10/05 Javascript