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中实现字符串类型与字典类型相互转换的方法
Aug 18 Python
python字符串连接方式汇总
Aug 21 Python
Python中基本的日期时间处理的学习教程
Oct 16 Python
python中dir()与__dict__属性的区别浅析
Dec 10 Python
Python常用爬虫代码总结方便查询
Feb 25 Python
Python Flask框架扩展操作示例
May 03 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
Nov 04 Python
jupyternotebook 撤销删除的操作方式
Apr 17 Python
django Model层常用验证器及自定义验证器详解
Jul 15 Python
Python getattr()函数使用方法代码实例
Aug 10 Python
python如何随机生成高强度密码
Aug 19 Python
python开发入门——set的使用
Sep 03 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
浅析Mysql 数据回滚错误的解决方法
2013/08/05 PHP
php面向对象中static静态属性和静态方法的调用
2015/02/08 PHP
php从文件夹随机读取文件的方法
2015/06/01 PHP
PHP设计模式之迭代器模式
2016/06/17 PHP
PHP优化之批量操作MySQL实例分析
2020/04/23 PHP
jquery的$(document).ready()和onload的加载顺序
2010/05/26 Javascript
(jQuery,mootools,dojo)使用适合自己的编程别名命名
2010/09/14 Javascript
IE中jquery.form中ajax提交没反应解决方法分享
2012/09/11 Javascript
封装了一个支持匿名函数的Javascript事件监听器
2014/06/05 Javascript
node.js学习总结之调式代码的方法
2014/06/25 Javascript
使用typeof判断function是否存在于上下文
2014/08/14 Javascript
jQuery制作拼图小游戏
2015/01/12 Javascript
javascript时间排序算法实现活动秒杀倒计时效果
2021/01/28 Javascript
bootstrapValidator bootstrap-select验证不可用的解决办法
2017/01/11 Javascript
微信小程序 template模板详解及实例
2017/02/21 Javascript
Angular中的interceptors拦截器
2017/06/25 Javascript
解决vue同一slot在组件中渲染多次的问题
2018/09/06 Javascript
微信小程序实现获取准确的腾讯定位地址功能示例
2019/03/27 Javascript
Nodejs封装类似express框架的路由实例详解
2020/01/05 NodeJs
Python抓取Discuz!用户名脚本代码
2013/12/30 Python
Python httplib模块使用实例
2015/04/11 Python
理解python正则表达式
2016/01/15 Python
python 实现判断ip连通性的方法总结
2018/04/22 Python
5款Python程序员高频使用开发工具推荐
2019/04/10 Python
Pandas之Fillna填充缺失数据的方法
2019/06/25 Python
Python中常用的高阶函数实例详解
2020/02/21 Python
Python接口测试结果集实现封装比较
2020/05/01 Python
Python基于tkinter canvas实现图片裁剪功能
2020/11/05 Python
苹果音乐订阅:Apple Music
2018/08/02 全球购物
慕尼黑山地运动、户外服装和体育用品专家:Sporthaus Schuster
2019/08/27 全球购物
顶岗实习计划书
2014/01/10 职场文书
项目考察欢迎辞
2014/01/17 职场文书
父母寄语大全
2014/04/12 职场文书
大学生创业计划书怎么写
2014/09/15 职场文书
绵山导游词
2015/02/05 职场文书
2016教师廉洁从教心得体会
2016/01/13 职场文书