Python dict和defaultdict使用实例解析


Posted in Python onMarch 12, 2020

先看一个需求

from collections import defaultdict

"""
需求: 统计user_list中字母出现的次数
"""

user_dict = {}
user_list = ['A', 'B', 'C', 'A', 'C', 'C']

# 第一种方式

for item in user_list:
  if item not in user_dict:
    user_dict[item] = 1
  else:
    user_dict[item] += 1

print(user_dict) # {'A': 2, 'B': 1, 'C': 3}

# 第二种方式
user_dict = {}
user_list = ['A', 'B', 'C', 'A', 'C', 'C']
for item in user_list:
  user_dict.setdefault(item, 0) # 如果user_dict无item这个key,添加{item:0} , 如果有,不管. 而且这个方法性能比第一种方式好
  user_dict[item] += 1 # item的value值累加1

print(user_dict) # {'A': 2, 'B': 1, 'C': 3}

# 第三种方式.使用defaultdict
default_dict = defaultdict(int)
user_list = ['A', 'B', 'C', 'A', 'C', 'C']
for item in user_list:
  default_dict[item] += 1 # 使用这种方式,代码更简单,性能也更好
print(default_dict) # defaultdict(<class 'int'>, {'A': 2, 'B': 1, 'C': 3})

defaultdict的使用

Python dict和defaultdict使用实例解析

Python dict和defaultdict使用实例解析

Python dict和defaultdict使用实例解析

由上面的示例可知,defaultdict会根据创建实例参数的类型生成一个对应类型的默认值,

这对于dict类型的数据结构而言,可以很好避免KeyError类型的错误 .

此外,我们还可以自定义defaultdict调用对象的数据结构,以满足我们实际需要

def person():
  '''自定义一个可调用对象'''
  return {
    'name': '',
    'age': 0
  }
default_dict = defaultdict(person)
default_dict['p']
pass

Python dict和defaultdict使用实例解析

是不是很赞....

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python将html转成PDF的实现代码(包含中文)
Mar 04 Python
Python深入学习之装饰器
Aug 31 Python
python使用Tesseract库识别验证
Mar 21 Python
基于python log取对数详解
Jun 08 Python
tensorflow 获取模型所有参数总和数量的方法
Jun 14 Python
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
Apr 26 Python
树莓派实现移动拍照
Jun 22 Python
Python叠加两幅栅格图像的实现方法
Jul 05 Python
FFrpc python客户端lib使用解析
Aug 24 Python
python 公共方法汇总解析
Sep 16 Python
在Sublime Editor中配置Python环境的详细教程
May 03 Python
Python编写冷笑话生成器
Apr 20 Python
Python数据结构dict常用操作代码实例
Mar 12 #Python
Python基于类路径字符串获取静态属性
Mar 12 #Python
对python中return与yield的区别详解
Mar 12 #Python
python 子类调用父类的构造函数实例
Mar 12 #Python
python3中sorted函数里cmp参数改变详解
Mar 12 #Python
Python实现子类调用父类的初始化实例
Mar 12 #Python
python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)
Mar 12 #Python
You might like
PHP Ajax实现页面无刷新发表评论
2007/01/02 PHP
swfupload 多文件上传实现代码
2008/08/27 PHP
基于php设计模式中单例模式的应用分析
2013/05/15 PHP
php对二维数组按指定键值key排序示例代码
2013/11/26 PHP
php通过asort()给关联数组按照值排序的方法
2015/03/18 PHP
修改WordPress中文章编辑器的样式的方法详解
2015/12/15 PHP
IIS 7.5 asp Session超时时间设置方法
2017/04/17 PHP
jQuery实现跨域iframe接口方法调用
2015/03/14 Javascript
JS实现完全语义化的网页选项卡效果代码
2015/09/15 Javascript
浅析jQuery Mobile的初始化事件
2015/12/03 Javascript
详解JavaScript基本类型和引用类型
2015/12/09 Javascript
理解javascript定时器中的单线程
2016/02/23 Javascript
Node.js刷新session过期时间的实现方法推荐
2016/05/18 Javascript
浅谈如何实现easyui的datebox格式化
2016/06/12 Javascript
javascript表单控件实例讲解
2016/09/13 Javascript
vue+vant使用图片预览功能ImagePreview的问题解决
2020/04/10 Javascript
Node 模块原理与用法详解
2020/05/13 Javascript
Vue+axios封装请求实现前后端分离
2020/10/23 Javascript
html+vue.js 实现漂亮分页功能可兼容IE
2020/11/07 Javascript
python类定义的讲解
2013/11/01 Python
Python性能优化的20条建议
2014/10/25 Python
python脚本内运行linux命令的方法
2015/07/02 Python
Python统计文件中去重后uuid个数的方法
2015/07/30 Python
Python中@property的理解和使用示例
2019/06/11 Python
python中比较两个列表的实例方法
2019/07/04 Python
浅谈Python 递归算法指归
2019/08/22 Python
关于Python3 类方法、静态方法新解
2019/08/30 Python
简单了解Django ORM常用字段类型及参数配置
2020/01/07 Python
Python+PyQt5+MySQL实现天气管理系统
2020/06/16 Python
应用服务器有那些
2012/01/19 面试题
电话销售经理岗位职责
2013/12/07 职场文书
最新的咖啡店创业计划书
2013/12/30 职场文书
创业计划书如何编写
2014/02/06 职场文书
《影子》教学反思
2014/02/21 职场文书
Vue自定义铃声提示音组件的实现
2022/01/22 Vue.js
mysql聚集索引、辅助索引、覆盖索引、联合索引的使用
2022/02/12 MySQL