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基础教程之字典操作详解
Mar 25 Python
Python的Scrapy爬虫框架简单学习笔记
Jan 20 Python
python3.4下django集成使用xadmin后台的方法
Aug 15 Python
PowerBI和Python关于数据分析的对比
Jul 11 Python
把django中admin后台界面的英文修改为中文显示的方法
Jul 26 Python
如何基于python实现归一化处理
Jan 20 Python
Python字典深浅拷贝与循环方式方法详解
Feb 09 Python
解决Pycharm 导入其他文件夹源码的2种方法
Feb 12 Python
python实现测试工具(一)——命令行发送get请求
Oct 19 Python
python对 MySQL 数据库进行增删改查的脚本
Oct 22 Python
python绘图pyecharts+pandas的使用详解
Dec 13 Python
python实现图片转字符画的完整代码
Feb 21 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
基于mysql的论坛(5)
2006/10/09 PHP
PHP清除字符串中所有无用标签的方法
2014/12/01 PHP
PHP树形结构tree类用法示例
2019/02/01 PHP
ThinkPHP5.1验证码功能实现的示例代码
2020/06/08 PHP
jQuery-ui中自动完成实现方法
2010/06/10 Javascript
输入自动提示搜索提示功能的javascript:sugggestion.js
2013/09/02 Javascript
html5+javascript制作简易画板附图
2014/04/25 Javascript
jQuery setTimeout传递字符串参数报错的解决方法
2014/06/09 Javascript
Javascript实现简单的富文本编辑器附演示
2014/06/16 Javascript
Jquery针对tr td的一些实用操作方法(必看篇)
2016/10/05 Javascript
JavaScript 身份证号有效验证详解及实例代码
2016/10/20 Javascript
给easyui datebox扩展一个清空的实例
2016/11/09 Javascript
vue中如何实现pdf文件预览的方法
2018/07/12 Javascript
webpack4 入门最简单的例子介绍
2018/09/05 Javascript
小程序实现搜索界面 小程序实现推荐搜索列表效果
2019/05/18 Javascript
使用vue重构资讯页面的实例代码解析
2019/11/26 Javascript
鸿蒙系统中的 JS 开发框架
2020/09/18 Javascript
[02:13] 完美世界DOTA2联赛PWL DAY5集锦
2020/11/03 DOTA
Python的迭代器和生成器使用实例
2015/01/14 Python
详解Python之数据序列化(json、pickle、shelve)
2017/03/30 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
2018/04/18 Python
python 读取视频,处理后,实时计算帧数fps的方法
2018/07/10 Python
Python逐行读取文件中内容的简单方法
2019/02/26 Python
详解Python3中setuptools、Pip安装教程
2019/06/18 Python
Python API自动化框架总结
2019/11/12 Python
PyTorch中的Variable变量详解
2020/01/07 Python
python实现滑雪游戏
2020/02/22 Python
从零开始的TensorFlow+VScode开发环境搭建的步骤(图文)
2020/08/31 Python
越南综合购物网站:Lazada越南
2019/06/10 全球购物
Optimalprint加拿大:在线打印服务
2020/04/03 全球购物
2014年基层党组织公开承诺书
2014/03/29 职场文书
美德少年主要事迹材料
2015/11/04 职场文书
Python爬虫入门案例之爬取二手房源数据
2021/10/16 Python
Python&Matlab实现樱花的绘制
2022/04/07 Python
CI Games宣布《堕落之王2》使用虚幻引擎5制作 预计将于2023年正式发售
2022/04/11 其他游戏
nginx访问报403错误的几种情况详解
2022/07/23 Servers