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判断文件或文件夹是否存在的三种方法
Jul 27 Python
Python调用系统底层API播放wav文件的方法
Aug 11 Python
python 实现视频流下载保存MP4的方法
Jan 09 Python
不到20行代码用Python做一个智能聊天机器人
Apr 19 Python
python安装requests库的实例代码
Jun 25 Python
python实现把二维列表变为一维列表的方法分析
Oct 08 Python
pytorch之添加BN的实现
Jan 06 Python
Pytorch高阶OP操作where,gather原理
Apr 30 Python
python如何导入依赖包
Jul 13 Python
python 绘制场景热力图的示例
Sep 23 Python
Python基于locals返回作用域字典
Oct 17 Python
UI自动化定位常用实现方法代码示例
Oct 27 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
法国:浪漫之都的咖啡文化
2021/03/03 咖啡文化
PHP 创建文件(文件夹)以及目录操作代码
2010/03/04 PHP
关于查看MSSQL 数据库 用户每个表 占用的空间大小
2013/06/21 PHP
解析PHP 5.5 新特性
2013/07/02 PHP
php设计模式之简单工厂模式详解
2014/09/04 PHP
php 使用array函数实现分页
2015/02/13 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
2019/06/03 PHP
jquery 插件学习(六)
2012/08/06 Javascript
根据json字符串生成Html的一种方式
2013/01/09 Javascript
网站接入QQ登录的两种方法
2014/07/22 Javascript
jQuery结合CSS制作动态的下拉菜单
2015/10/27 Javascript
JavaScript给input的value赋值引发的关于基本类型值和引用类型值问题
2015/12/07 Javascript
js验证框架之RealyEasy验证详解
2016/06/08 Javascript
Vue组件tree实现树形菜单
2017/04/13 Javascript
JavaScript实现动态留言板
2020/03/16 Javascript
jQuery+ajax实现用户登录验证
2020/09/13 jQuery
python异步编程 使用yield from过程解析
2019/09/25 Python
python实现简单图书管理系统
2019/11/22 Python
安装多个版本的TensorFlow的方法步骤
2020/04/21 Python
python interpolate插值实例
2020/07/06 Python
python七种方法判断字符串是否包含子串
2020/08/18 Python
python中的对数log函数表示及用法
2020/12/09 Python
HTML5 实现一个访问本地文件的实例
2012/12/13 HTML / CSS
俄罗斯街头服装品牌:Black Star Wear
2017/03/01 全球购物
乌克兰电子产品和家用电器购物网站:TOUCH
2019/08/09 全球购物
Muziker英国:中欧最大的音乐家商店
2020/02/05 全球购物
专业求职信撰写要诀
2014/02/18 职场文书
《在家里》教后反思
2014/03/01 职场文书
任命书范本大全
2014/06/06 职场文书
淘宝店策划方案
2014/06/07 职场文书
企业优秀团员事迹材料
2014/08/20 职场文书
2014年党员教师自我剖析材料
2014/09/30 职场文书
敬业奉献模范事迹材料
2014/12/24 职场文书
2015年国庆节新闻稿
2015/07/18 职场文书
Redis特殊数据类型HyperLogLog基数统计算法讲解
2022/06/01 Redis