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中让MySQL查询结果返回字典类型的方法
Aug 22 Python
python绘图方法实例入门
May 19 Python
利用Python开发实现简单的记事本
Nov 15 Python
用Python下载一个网页保存为本地的HTML文件实例
May 21 Python
实例介绍Python中整型
Feb 11 Python
浅谈Python反射 & 单例模式
Mar 21 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
Jun 13 Python
如何利用Python识别图片中的文字
May 31 Python
Python astype(np.float)函数使用方法解析
Jun 08 Python
python中tab键是什么意思
Jun 18 Python
Pycharm 如何设置HTML文件自动补全代码或标签
May 21 Python
Pygame Time时间控制的具体使用详解
Nov 17 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
如何分别全角和半角以避免乱码
2006/10/09 PHP
PHP set_time_limit(0)长连接的实现分析
2010/03/02 PHP
解析VS2010利用VS.PHP插件调试PHP的方法
2013/07/19 PHP
PHP合并discuz用户脚本的方法
2015/08/04 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2011/09/13 Javascript
js实现数字每三位加逗号的方法
2015/02/05 Javascript
JavaScript编程中布尔对象的基本使用
2015/10/25 Javascript
jQuery基础知识点总结(必看)
2016/05/31 Javascript
bootstrap滚动监控器使用方法解析
2017/01/13 Javascript
在点击div中的p时,如何阻止事件冒泡
2017/02/07 Javascript
vue-cli初始化项目中使用less的方法
2018/08/09 Javascript
js如何实现元素曝光上报
2019/08/07 Javascript
微信公众号平台接口开发 获取access_token过程解析
2019/08/14 Javascript
Element Notification通知的实现示例
2020/07/27 Javascript
如何利用nodejs自动定时发送邮件提醒(超实用)
2020/12/01 NodeJs
详解Vue3 Teleport 的实践及原理
2020/12/02 Vue.js
浅析Python中的多重继承
2015/04/28 Python
在Python中用keys()方法返回字典键的教程
2015/05/21 Python
Python subprocess模块常见用法分析
2018/06/12 Python
Python中利用aiohttp制作异步爬虫及简单应用
2018/11/29 Python
pyqt5 禁止窗口最大化和禁止窗口拉伸的方法
2019/06/18 Python
Django REST framework内置路由用法
2019/07/26 Python
对YOLOv3模型调用时候的python接口详解
2019/08/26 Python
python3.5 cv2 获取视频特定帧生成jpg图片
2019/08/28 Python
基于python生成英文版词云图代码实例
2020/05/16 Python
详解tensorflow2.x版本无法调用gpu的一种解决方法
2020/05/25 Python
常用的10个Python实用小技巧
2020/08/10 Python
简单的HTML5初步入门教程
2015/09/29 HTML / CSS
详解如何解决使用JSON.stringify时遇到的循环引用问题
2021/03/23 Javascript
优秀党员转正的自我评价
2013/10/06 职场文书
商场租赁意向书
2014/07/30 职场文书
2014年大堂经理工作总结
2014/11/21 职场文书
有关朝花夕拾的读书笔记
2015/06/29 职场文书
创业计划书之网络外卖
2019/10/31 职场文书
Echarts如何重新渲染实例详解
2022/05/30 Javascript