详解Python 中的 defaultdict 数据类型


Posted in Python onFebruary 22, 2021

这篇文章给大家介绍Python 中的 defaultdict 数据类型,具体内容如下所示:

官方网址

首先,defaultdictdict 的一个子类。通常 Python 中字典(dict)这种数据类型是通过键值对来存取的,当索引一个不存在的键时,就会引发 keyerror 异常。那么,defaultdict 就可以解决这个问题,它可以实现为不存的键值返回一个默认值。

详解Python 中的 defaultdict 数据类型

defaultdictcollections 包下的一个模块,defaultdict 在初始化时可以提供一个 default_factory 的参数,default_factory 接收一个工厂函数作为参数, 可以是 int、str、list 等内置函数,也可以是自定义函数。

用法实例如下:

示例一: 统计字符串中字母出现的个数。

from collections import defaultdict

s = 'mississippi'
d = defaultdict(int)
for k in s:
 d[k] += 1
print(d)

# 输出
# defaultdict(<class 'int'>, {'m': 1, 'i': 4, 's': 4, 'p': 2})

如果不用 defaultdict 的话,写法如下:

s = 'mississippi'
d = {}
for k in s:
 if k not in d:
  d[k] = 1
 else:
  d[k] = d[k] + 1
print(d)

# 输出
# {'m': 1, 'i': 4, 's': 4, 'p': 2}
s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
d = defaultdict(list)
for k, v in s:
 d[k].append(v)
print(d)

# 输出
# defaultdict(<class 'list'>, {'yellow': [1, 3], 'blue': [2, 4], 'red': [1]})

示例二: 使用 lambda 函数。

q = defaultdict(lambda: [0, 0, 0])
print(q['a'])

# 输出
# [0, 0, 0]

到此这篇关于Python 中的 defaultdict 数据类型的文章就介绍到这了,更多相关Python defaultdict 数据类型内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
深入解析Python编程中JSON模块的使用
Oct 15 Python
Python利用BeautifulSoup解析Html的方法示例
Jul 30 Python
Python面向对象编程基础解析(二)
Oct 26 Python
在Python中给Nan值更改为0的方法
Oct 30 Python
详解Pandas之容易让人混淆的行选择和列选择
Jul 10 Python
Django中使用CORS实现跨域请求过程解析
Aug 05 Python
Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析
Aug 15 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
Jul 07 Python
Python读取多列数据以及用matplotlib制作图表方法实例
Sep 23 Python
Python就将所有的英文单词首字母变成大写
Feb 12 Python
Flask response响应的具体使用
Jul 15 Python
详解PyTorch模型保存与加载
Apr 28 Python
python快速安装OpenCV的步骤记录
Feb 22 #Python
Python中生成ndarray实例讲解
Feb 22 #Python
python爬虫利用代理池更换IP的方法步骤
Feb 21 #Python
Python用requests库爬取返回为空的解决办法
Feb 21 #Python
python利用proxybroker构建爬虫免费IP代理池的实现
Feb 21 #Python
python实现图片转字符画的完整代码
Feb 21 #Python
利用Python实现最小二乘法与梯度下降算法
Feb 21 #Python
You might like
php面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
2009/09/30 PHP
php邮件发送,php发送邮件的类
2011/03/24 PHP
CURL的学习和应用(附多线程实现)
2013/06/03 PHP
PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
2014/12/25 PHP
Yii实现自动加载类地图的方法
2015/04/01 PHP
PHP与Ajax相结合实现登录验证小Demo
2016/03/16 PHP
PHP实现下载远程图片保存到本地的方法
2017/06/19 PHP
多个datatable共存造成多个表格的checkbox都被选中
2013/07/11 Javascript
js中arguments的用法(实例讲解)
2013/11/30 Javascript
jQuery学习笔记之创建DOM元素
2015/01/19 Javascript
jquery实现鼠标滑过显示提示框的方法
2015/02/05 Javascript
分享几种比较简单实用的JavaScript tabel切换
2015/12/31 Javascript
JavaScript中使用数组方法汇总
2016/02/16 Javascript
微信小程序实现音乐播放器
2019/11/20 Javascript
原生js实现无缝轮播图
2020/01/11 Javascript
JavaScript或jQuery 获取option value值方法解析
2020/05/12 jQuery
vue实现简单的登录弹出框
2020/10/26 Javascript
js动态生成表格(节点操作)
2021/01/12 Javascript
[01:13]2015国际邀请赛线下观战现场
2015/08/08 DOTA
[48:37]EG vs OG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
不要用强制方法杀掉python线程
2017/02/26 Python
selenium+python设置爬虫代理IP的方法
2018/11/29 Python
浅谈Python访问MySQL的正确姿势
2020/01/07 Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
2020/09/17 Python
Python3.7安装PyQt5 运行配置Pycharm的详细教程
2020/10/15 Python
Python 数据分析之逐块读取文本的实现
2020/12/14 Python
CLR与IL分别是什么含义
2016/08/23 面试题
应聘医药销售自荐书范文
2014/02/08 职场文书
材料加工工程求职信
2014/02/19 职场文书
优秀毕业生的求职信
2014/07/21 职场文书
2014年小学德育工作总结
2014/12/05 职场文书
高中同学会致辞
2015/08/01 职场文书
Go各时间字符串使用解析
2021/04/02 Golang
Mysql数据库命令大全
2021/05/26 MySQL
Spring Boot mybatis-config 和 log4j 输出sql 日志的方式
2021/07/26 Java/Android
CSS实现背景图片全屏铺满自适应的3种方式
2022/07/07 HTML / CSS