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编写脚本使IE实现代理上网的教程
Apr 23 Python
Python 中pandas.read_excel详细介绍
Jun 23 Python
python使用PyCharm进行远程开发和调试
Nov 02 Python
Python实现正整数分解质因数操作示例
Aug 01 Python
对python GUI实现完美进度条的示例详解
Dec 13 Python
python实现两张图片拼接为一张图片并保存
Jul 16 Python
使用Python完成15位18位身份证的互转功能
Nov 06 Python
pycharm内无法import已安装的模块问题解决
Feb 12 Python
Python如何将函数值赋给变量
Apr 28 Python
浅谈keras.callbacks设置模型保存策略
Jun 18 Python
Node.js 和 Python之间该选择哪个?
Aug 05 Python
Python爬虫入门案例之回车桌面壁纸网美女图片采集
Oct 16 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 截取字符串并以零补齐str_pad() 函数
2011/05/07 PHP
PHP检查端口是否可以被绑定的方法示例
2018/08/09 PHP
PHP快速排序算法实现的原理及代码详解
2019/04/03 PHP
Thinkphp5.0 框架视图view的比较标签用法分析
2019/10/12 PHP
jQuery 注意事项 与原因分析
2009/04/24 Javascript
使用js实现按钮控制文本框加1减1应用于小时+分钟
2013/12/09 Javascript
JavaScript控制网页层收起和展开效果的方法
2015/04/15 Javascript
jQuery实现表格展开与折叠的方法
2015/05/04 Javascript
javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)
2015/07/27 Javascript
zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题
2015/08/27 Javascript
用js写的一个路由(简单实例)
2016/09/24 Javascript
JS实现两周内自动登录功能
2017/03/23 Javascript
bootstrap table使用入门基本用法
2017/05/24 Javascript
javascript checkbox/radio onchange不能兼容ie8处理办法
2017/06/13 Javascript
JavaScript之underscore_动力节点Java学院整理
2017/07/03 Javascript
Vue.js 单页面多路由区域操作的实例详解
2017/07/17 Javascript
Vue路由前后端设计总结
2019/08/06 Javascript
Layui数据表格判断编辑输入的值,是否为我需要的类型详解
2019/10/26 Javascript
详解如何在vue+element-ui的项目中封装dialog组件
2020/12/11 Vue.js
vue 动态生成拓扑图的示例
2021/01/03 Vue.js
python处理圆角图片、圆形图片的例子
2014/04/25 Python
举例讲解Python编程中对线程锁的使用
2016/07/12 Python
python elasticsearch从创建索引到写入数据的全过程
2019/08/04 Python
详解python中*号的用法
2019/10/21 Python
执行Python程序时模块报错问题
2020/03/26 Python
解决paramiko执行命令超时的问题
2020/04/16 Python
Python使用文件操作实现一个XX信息管理系统的示例
2020/07/02 Python
7款设计巧妙的css3飘带状3D立体效果的导航菜单和表单窗口
2013/02/04 HTML / CSS
小学教师的个人自我鉴定
2013/10/26 职场文书
大学毕业生的自我鉴定
2013/11/30 职场文书
公积金单位接收函
2014/01/11 职场文书
考试作弊检讨书大全
2014/02/18 职场文书
工会换届选举方案
2014/05/21 职场文书
会计专业应届生自荐信
2014/06/28 职场文书
80后创业总结的9条职场用人思想,记得收藏
2019/08/13 职场文书
Javascript之datagrid查询详解
2021/09/15 Javascript