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 相关文章推荐
Pycharm 设置自定义背景颜色的图文教程
May 23 Python
Django框架会话技术实例分析【Cookie与Session】
May 24 Python
python 实现在一张图中绘制一个小的子图方法
Jul 07 Python
Python流程控制 while循环实现解析
Sep 02 Python
python 三元运算符使用解析
Sep 16 Python
Python3和pyqt5实现控件数据动态显示方式
Dec 13 Python
Python 实现向word(docx)中输出
Feb 13 Python
Python3.7下安装pyqt5的方法步骤(图文)
May 12 Python
keras 两种训练模型方式详解fit和fit_generator(节省内存)
Jul 03 Python
Python 数据的累加与统计的示例代码
Aug 03 Python
一个入门级python爬虫教程详解
Jan 27 Python
使用python实现学生信息管理系统
Feb 25 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
使用apache模块rewrite_module (转)
2007/02/14 PHP
PHP中call_user_func_array()函数的用法演示
2012/02/05 PHP
php jquery 多文件上传简单实例
2013/12/23 PHP
thinkphp的c方法使用示例
2014/02/24 PHP
JavaScript/Js脚本处理html元素的自定义属性解析(亲测兼容Firefox与IE)
2013/11/25 Javascript
使用原生js写的一个简单slider
2014/04/29 Javascript
jQuery控制TR显示隐藏的几种方法
2014/06/18 Javascript
jquery中map函数与each函数的区别实例介绍
2014/06/23 Javascript
JavaScript将Web页面内容导出到Word及Excel的方法
2015/02/13 Javascript
js通过iframe加载外部网页的实现代码
2015/04/05 Javascript
jQuery实现选项联动轮播效果【附实例】
2016/04/19 Javascript
nodejs连接mysql数据库简单封装示例-mysql模块
2017/04/10 NodeJs
Iview Table组件中各种组件扩展的使用
2018/10/20 Javascript
jquery插件开发模式实例详解
2019/07/20 jQuery
详解Java中String JSONObject JSONArray List转换
2020/11/13 Javascript
vue element和nuxt的使用技巧分享
2021/01/14 Vue.js
对python3中pathlib库的Path类的使用详解
2018/10/14 Python
Pandas:Series和DataFrame删除指定轴上数据的方法
2018/11/10 Python
python 实现分页显示从es中获取的数据方法
2018/12/26 Python
为什么是 Python -m
2020/06/19 Python
python实现网页录音效果
2020/10/26 Python
CSS3混合模式mix-blend-mode/background-blend-mode简介
2018/03/15 HTML / CSS
ASOS亚洲:ASOS Asia
2018/03/04 全球购物
Viking Direct荷兰:购买办公用品
2019/06/20 全球购物
快餐店的创业计划书范文
2014/01/29 职场文书
学生期末评语大全
2014/04/30 职场文书
公司周年庆典标语
2014/10/07 职场文书
2014群众路线学习笔记
2014/11/06 职场文书
离婚起诉书怎么写
2015/05/19 职场文书
入党培养人考察意见
2015/06/08 职场文书
劳保用品管理制度范本
2015/08/06 职场文书
2019关于垃圾分类处理的调查报告
2019/12/26 职场文书
解决Pytorch修改预训练模型时遇到key不匹配的情况
2021/06/05 Python
python数据可视化JupyterLab实用扩展程序Mito
2021/11/20 Python
最新最全的手机号验证正则表达式
2022/02/24 Javascript
windows server2008 开启端口的实现方法
2022/06/25 Servers