Python学习小技巧之利用字典的默认行为


Posted in Python onMay 20, 2017

本文介绍的是关于Python利用字典的默认行为的相关内容,分享出来供大家参考学习,下面来看看详细的介绍:

典型代码1:

from collections import defaultdict 
 
 
if __name__ == '__main__': 
 data = defaultdict(int) 
 data[0] += 1 
 print(data)

输出1:

defaultdict(<type 'int'>, {0: 1})

典型代码2:

if __name__ == '__main__': 
 data = {'k': 1} 
 data.setdefault('k', 100) 
 data.setdefault('k1', -100) 
 print(data)

输出2:

{'k': 1, 'k1': -100}

应用场景:

典型代码1的应用场景:

在写一些统计代码的时候,总是需要统计一些key的个数,用一个字典来存储计数的结果,如果使用的是经典字典,那么我们每次都需要人工写代码来判断对应的key是否存在,如果不存在还需要将其存入这个字典中,再将其初始化为0;而利用defaultdict数据类型,我们就可以直接指定一个工厂函数来为我们生产默认值,典型代码1中使用的是内置的int函数,当然也可以是lambda表达式定义的匿名函数。

典型代码2的应用场景:

对于一个字典,如果我们只想保留每个key被第一次指定的值,如果用传统的方法data['k']='v'的话,我们需要每次都要判断相应的key是否已经存在于字典中,然后才能决定是否能够设置这个key的值;二利用dict的setdefault方法,我们可以避免这次判断,以更加简洁的方式实现这个功能。

带来的好处:

      1. 场景2中的setdefault方法,在Python解释器的实现中经过优化,一般情况下要比自己写的同样功能的Python代码执行效率要高

      2. 这两种默认情形,都能够使代码更加紧凑,逻辑上,读代码时理解起来也更高效

其它说明:

      1. defaultdict类型,可以接收很多的类型,内置的list, set, dict都可以直接使用,使用lambda匿名函数,可以使用自己定义的类型

总结

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python使用稀疏矩阵节省内存实例
Jun 27 Python
Python使用shelve模块实现简单数据存储的方法
May 20 Python
Python中Iterator迭代器的使用杂谈
Jun 20 Python
python入门基础之用户输入与模块初认识
Nov 14 Python
利用python微信库itchat实现微信自动回复功能
May 18 Python
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
Dec 26 Python
Python中的pathlib.Path为什么不继承str详解
Jun 23 Python
python可视化篇之流式数据监控的实现
Aug 07 Python
Python使用matplotlib 模块scatter方法画散点图示例
Sep 27 Python
基于Python实现全自动下载抖音视频
Nov 06 Python
关于Python使用turtle库画任意图的问题
Apr 01 Python
用PYTHON去计算88键钢琴的琴键频率和音高
Apr 10 Python
Python学习小技巧之列表项的排序
May 20 #Python
Python学习小技巧之列表项的推导式与过滤操作
May 20 #Python
Python yield 使用方法浅析
May 20 #Python
Python学习小技巧之列表项的拼接
May 20 #Python
Django验证码的生成与使用示例
May 20 #Python
Linux RedHat下安装Python2.7开发环境
May 20 #Python
深入理解Python中的内置常量
May 20 #Python
You might like
PHP的拦截器实例分析
2014/11/03 PHP
php实现图片等比例缩放代码
2015/07/23 PHP
php实现分页功能的详细实例方法
2019/09/29 PHP
php中get_object_vars()在数组的实例用法
2021/02/22 PHP
javascript的键盘控制事件说明
2008/04/15 Javascript
jQuery对象和DOM对象使用说明
2010/06/25 Javascript
Node.js实现在目录中查找某个字符串及所在文件
2014/09/03 Javascript
node.js中的favicon.ico请求问题处理
2014/12/15 Javascript
一个用jquery写的判断div滚动条到底部的方法【推荐】
2016/04/29 Javascript
总结Node.js中的一些错误类型
2016/08/15 Javascript
js格式化时间的简单实例
2016/11/27 Javascript
详解用vue-cli来搭建vue项目和webpack
2017/04/20 Javascript
JS按钮闪烁功能的实现代码
2017/07/21 Javascript
vue select组件的使用与禁用实现代码
2018/04/10 Javascript
CentOS7中源码编译安装NodeJS的完整步骤
2018/10/13 NodeJs
详解Angular模板引用变量及其作用域
2018/11/23 Javascript
webpack中如何加载静态文件的方法步骤
2019/05/18 Javascript
Flutter实现仿微信底部菜单栏功能
2019/09/18 Javascript
让IDE识别webpack的别名alias的实现方法
2020/05/06 Javascript
mac PyCharm添加Python解释器及添加package路径的方法
2018/10/29 Python
Python 实现域名解析为ip的方法
2019/02/14 Python
libreoffice python 操作word及excel文档的方法
2019/07/04 Python
Python多线程模块Threading用法示例小结
2019/11/09 Python
Python在字符串中处理html和xml的方法
2020/07/31 Python
Python Sqlalchemy如何实现select for update
2020/10/12 Python
彪马英国官网:PUMA英国
2019/02/11 全球购物
申报职称专业技术个人的自我评价
2013/12/12 职场文书
校园新闻广播稿
2014/01/10 职场文书
酒店爱岗敬业演讲稿
2014/09/02 职场文书
个人工作作风整改措施思想汇报
2014/10/13 职场文书
2014年单位工作总结范文
2014/11/27 职场文书
2015年幼儿园元旦游艺活动策划书
2014/12/09 职场文书
婚庆开业庆典主持词
2015/06/30 职场文书
煤矿安全学习心得体会
2016/01/18 职场文书
2016年幼儿园教研活动总结
2016/04/05 职场文书
浅谈MySQL 亿级数据分页的优化
2021/06/15 MySQL