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解决鸡兔同笼问题的方法
Dec 20 Python
Python操作csv文件实例详解
Jul 31 Python
Python将文本去空格并保存到txt文件中的实例
Jul 24 Python
Python爬虫基础之XPath语法与lxml库的用法详解
Sep 13 Python
使用selenium模拟登录解决滑块验证问题的实现
May 10 Python
命令行运行Python脚本时传入参数的三种方式详解
Oct 11 Python
Python selenium的基本使用方法分析
Dec 21 Python
python对指定字符串逆序的6种方法(小结)
Apr 02 Python
python实现批处理文件
Jul 28 Python
Python正则re模块使用步骤及原理解析
Aug 18 Python
python代码实现备忘录案例讲解
Jul 26 Python
基于Python实现将列表数据生成折线图
Mar 23 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
在线增减.htpasswd内的用户
2006/10/09 PHP
解析如何修改phpmyadmin中的默认登陆超时时间
2013/06/25 PHP
使用php记录用户通过搜索引擎进网站的关键词
2014/02/13 PHP
PHP基于socket实现客户端和服务端通讯功能
2017/07/13 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
在laravel5.2中实现点击用户头像更改头像的方法
2019/10/14 PHP
Gambit vs ForZe BO3 第一场 2.13
2021/03/10 DOTA
JavaScript在IE中“意外地调用了方法或属性访问”
2008/11/19 Javascript
JavaScript 利用Cookie记录用户登录信息
2009/12/08 Javascript
JS限制文本框只能输入数字和字母方法
2015/02/28 Javascript
jQuery遍历页面所有CheckBox查看是否被选中的方法
2015/04/14 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
JS新包管理工具yarn和npm的对比与使用入门
2016/12/09 Javascript
纯JS实现图片验证码功能并兼容IE6-8(推荐)
2017/04/19 Javascript
判断颜色是否合法的正则表达式(详解)
2017/05/03 Javascript
vue-awesome-swiper滑块插件使用方法详解
2017/11/27 Javascript
使用Electron构建React+Webpack桌面应用的方法
2017/12/15 Javascript
JavaScript创建对象的常用方式总结
2018/08/10 Javascript
微信小程序页面渲染实现方法
2019/11/06 Javascript
更改Python命令行交互提示符的方法
2015/01/14 Python
Python复制目录结构脚本代码分享
2015/03/06 Python
Python中splitlines()方法的使用简介
2015/05/20 Python
解读Python编程中的命名空间与作用域
2015/10/16 Python
Python匹配中文的正则表达式
2016/05/11 Python
Python整数对象实现原理详解
2019/07/01 Python
Html5导航栏吸顶方案原理与对比实现
2020/06/10 HTML / CSS
Nebula美国官网:便携式投影仪
2019/03/15 全球购物
大学校庆邀请函
2014/01/11 职场文书
教师学习培训邀请函
2014/02/04 职场文书
单位消防安全责任书
2014/07/23 职场文书
党的群众路线教育实践活动批评与自我批评范文
2014/10/16 职场文书
2014年扶贫工作总结
2014/11/18 职场文书
美术教师个人总结
2015/02/06 职场文书
房租涨价通知
2015/04/23 职场文书
2015年学校保卫部工作总结
2015/05/11 职场文书
初中英语教学反思范文
2016/02/15 职场文书