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使用MYSQLDB实现从数据库中导出XML文件的方法
May 11 Python
Python编程中的for循环语句学习教程
Oct 14 Python
Windows下python2.7.8安装图文教程
May 26 Python
python入门教程之识别验证码
Mar 04 Python
Python基于PyGraphics包实现图片截取功能的方法
Dec 21 Python
python3.6连接MySQL和表的创建与删除实例代码
Dec 28 Python
Python实现针对给定字符串寻找最长非重复子串的方法
Apr 21 Python
浅谈python str.format与制表符\t关于中文对齐的细节问题
Jan 14 Python
Python自动化完成tb喵币任务的操作方法
Oct 30 Python
python中68个内置函数的总结与介绍
Feb 24 Python
Python网络爬虫信息提取mooc代码实例
Mar 06 Python
python 解决微分方程的操作(数值解法)
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
SMARTY学习手记
2007/01/04 PHP
解析thinkphp基本配置 convention.php
2013/06/18 PHP
详解PHP的Yii框架中自带的前端资源包的使用
2016/03/31 PHP
php实现学生管理系统
2020/03/21 PHP
Javascript中实现trim()函数的两种方法
2015/02/04 Javascript
Jquery实现地铁线路指示灯提示牌效果的方法
2015/03/02 Javascript
jquery实现的3D旋转木马特效代码分享
2015/08/25 Javascript
jquery UI Datepicker时间控件的使用及问题解决
2016/04/28 Javascript
javascript实现平滑无缝滚动
2020/08/09 Javascript
JS定义类的六种方式详解
2016/05/12 Javascript
深入理解js中this的用法
2016/05/28 Javascript
使用jQuery给input标签设置默认值
2016/06/20 Javascript
jquery实现瀑布流效果 jquery下拉加载新数据
2016/12/12 Javascript
浅谈vue后台管理系统权限控制思考与实践
2018/12/19 Javascript
vue组件开发props验证的实现
2019/02/12 Javascript
Vue 列表上下过渡效果的实例代码
2019/06/25 Javascript
bootstrap table实现横向合并与纵向合并
2019/07/18 Javascript
浅谈JavaScript中this的指向问题
2020/07/28 Javascript
TensorFlow如何实现反向传播
2018/02/06 Python
TensorFlow实现随机训练和批量训练的方法
2018/04/28 Python
Python 调用PIL库失败的解决方法
2019/01/08 Python
使用python画社交网络图实例代码
2019/07/10 Python
python 自定义装饰器实例详解
2019/07/20 Python
Python 私有化操作实例分析
2019/11/21 Python
selenium自动化测试入门实战
2020/12/21 Python
你不知道的葡萄干处理法、橙蜜处理法、二氧化碳酵母法
2021/03/17 冲泡冲煮
阿迪达斯英国官方网站:adidas英国
2019/08/13 全球购物
企业面试题试卷附带答案
2015/12/20 面试题
Delphi笔试题
2016/11/14 面试题
房地产开盘策划方案
2014/02/10 职场文书
继承权公证书
2014/04/09 职场文书
2014小学生国庆65周年演讲稿
2014/09/21 职场文书
个人德育工作总结
2015/03/05 职场文书
给领导敬酒词
2015/08/12 职场文书
Python如何识别银行卡卡号?
2021/06/10 Python
MySQL的意向共享锁、意向排它锁和死锁
2022/07/15 MySQL