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实现把utf-8格式的文件转换成gbk格式的文件
Jan 22 Python
使用python调用zxing库生成二维码图片详解
Jan 10 Python
python 删除列表里所有空格项的方法总结
Apr 18 Python
python3.4实现邮件发送功能
May 28 Python
python十进制和二进制的转换方法(含浮点数)
Jul 07 Python
对Python 多线程统计所有csv文件的行数方法详解
Feb 12 Python
python ddt数据驱动最简实例代码
Feb 22 Python
python3获取文件中url内容并下载代码实例
Dec 27 Python
Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
Feb 07 Python
Python标准库json模块和pickle模块使用详解
Mar 10 Python
全面介绍python中很常用的单元测试框架unitest
Dec 14 Python
浅谈python中的多态
Jun 15 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
php中json_decode()和json_encode()的使用方法
2012/06/04 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
2017/12/26 PHP
location.href语句与火狐不兼容的问题
2010/07/04 Javascript
js文件缓存之版本管理详解
2013/07/05 Javascript
输入自动提示搜索提示功能的javascript:sugggestion.js
2013/09/02 Javascript
原生JavaScript实现滚动条效果
2020/03/24 Javascript
js仿淘宝和百度文库的评分功能
2016/05/15 Javascript
vue.js实现仿原生ios时间选择组件实例代码
2016/12/21 Javascript
Vue2 使用 Echarts 创建图表实例代码
2017/05/18 Javascript
vue2实现可复用的轮播图carousel组件详解
2017/11/27 Javascript
JS运动特效之完美运动框架实例分析
2018/01/24 Javascript
React Native 图片查看组件的方法
2018/03/01 Javascript
Vue二次封装axios为插件使用详解
2018/05/21 Javascript
解决angularjs中同步执行http请求的方法
2018/08/13 Javascript
Vue CLI3移动端适配(px2rem或postcss-plugin-px2rem)
2020/04/27 Javascript
[02:04]2018DOTA2亚洲邀请赛Secret赛前采访
2018/04/03 DOTA
常用python编程模板汇总
2016/02/12 Python
Python爬虫DOTA排行榜爬取实例(分享)
2017/06/13 Python
Python基础教程之浅拷贝和深拷贝实例详解
2017/07/15 Python
python itchat实现微信好友头像拼接图的示例代码
2017/08/14 Python
python中的插值 scipy-interp的实现代码
2018/07/23 Python
Python字典遍历操作实例小结
2019/03/05 Python
python如何求圆的面积
2020/07/01 Python
做一个能自适应高度的textarea的示例代码
2019/09/06 HTML / CSS
Expedia泰国:预订机票、酒店和旅游包(航班+酒店)
2016/09/27 全球购物
微软英国官方网站:Microsoft英国
2016/10/15 全球购物
Bibloo奥地利:购买女装、男装、童装、鞋和配件
2018/10/18 全球购物
数据库什么时候应该被重组
2012/11/02 面试题
什么是GWT的Module
2013/01/20 面试题
大学生演讲稿范文
2014/01/11 职场文书
教师演讲稿开场白
2014/08/25 职场文书
投资合作意向书范本
2015/05/08 职场文书
辞职报告(范文三篇)
2019/08/27 职场文书
springboot如何初始化执行sql语句
2021/06/22 Java/Android
SQLServer中exists和except用法介绍
2021/12/04 SQL Server
HTML基本元素标签介绍
2022/02/28 HTML / CSS