详解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 yield使用方法示例
Dec 04 Python
Django静态资源URL STATIC_ROOT的配置方法
Nov 08 Python
使用Python标准库中的wave模块绘制乐谱的简单教程
Mar 30 Python
Python封装shell命令实例分析
May 05 Python
基于Python实现文件大小输出
Jan 11 Python
python中nan与inf转为特定数字方法示例
May 11 Python
基于Django与ajax之间的json传输方法
May 29 Python
使用python批量化音乐文件格式转换的实例
Jan 09 Python
python处理document文档保留原样式
Sep 23 Python
Python序列对象与String类型内置方法详解
Oct 22 Python
Python转换字典成为对象,可以用&quot;.&quot;方式访问对象属性实例
May 11 Python
pandas 实现将NaN转换为None
May 14 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
MOTOROLA 摩托罗拉 MODEL 66-XI五灯中波收音机
2021/03/02 无线电
PHP 引用是个坏习惯
2010/03/12 PHP
解析array splice的移除数组中指定键的值,返回一个新的数组
2013/07/02 PHP
php socket客户端及服务器端应用实例
2014/07/04 PHP
php结合ACCESS的跨库查询功能
2015/06/12 PHP
PHP链表操作简单示例
2016/10/15 PHP
php分享朋友圈的实现代码
2019/02/18 PHP
JavaScript 密码强度判断代码
2009/09/05 Javascript
Ext.MessageBox工具类简介
2009/12/10 Javascript
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
document.getElementById获取控件对象为空的解决方法
2013/11/20 Javascript
JavaScript中的undefined学习总结
2013/11/30 Javascript
jquery.post用法之type设置问题
2014/02/24 Javascript
jQuery中animate()方法用法实例
2014/12/24 Javascript
js实现的Easy Tabs选项卡用法实例
2015/09/06 Javascript
nodejs和C语言插入mysql数据库乱码问题的解决方法
2017/04/14 NodeJs
VUE实现表单元素双向绑定(总结)
2017/08/08 Javascript
JS实现下拉菜单列表与登录注册弹窗效果
2017/08/10 Javascript
redux-saga 初识和使用
2018/03/10 Javascript
js图片查看器插件用法示例
2019/06/22 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
2019/07/22 Javascript
微信小程序实现一张或多张图片上传(云开发)
2019/09/25 Javascript
bootstrapValidator表单校验、更改状态、新增、移除校验字段的实例代码
2020/05/19 Javascript
微信小程序实现聊天室
2020/08/21 Javascript
面向初学者的Python编辑器Mu
2018/10/08 Python
python文档字符串(函数使用说明)使用详解
2019/07/30 Python
5 分钟读懂Python 中的 Hook 钩子函数
2020/12/09 Python
Bath & Body Works阿联酋:在线购买沐浴和身体用品
2021/02/27 全球购物
大学生入党自我鉴定
2013/10/31 职场文书
求职信写作要突出重点
2014/01/01 职场文书
农民工工资发放承诺书
2014/03/31 职场文书
计算机科学与技术专业求职信
2014/09/03 职场文书
2014年电厂工作总结
2014/12/04 职场文书
银行工作心得体会范文
2016/01/23 职场文书
redis requires ruby version2.2.2的解决方案
2021/07/15 Redis
关于python中模块和重载的问题
2021/11/02 Python