Python中defaultdict与lambda表达式用法实例小结


Posted in Python onApril 09, 2018

本文实例讲述了Python中defaultdict与lambda表达式用法。分享给大家供大家参考,具体如下:

从教程中看到defaultdict是一个类,在一台装有Python2.7.6的电脑上使用发现不存在。在文档中搜索了一下也没有找到,想当然以为这或许是Python 3.X专有的。因为教程就是基于Python 3.X实现的。后来换了一台装有Python 3.X的电脑依然出问题。

求助于网络,发现这个类其实是collections模块中的一个类。看来,学习很难摆脱网络环境啊!

这个类是dict的一个子类,重写了一个方法并增加了一个事件变量。在实例化的时候,第一个参数提供给default_factory的初始化函数。这个参数可以是一个类型或者函数,至于是类型这不难理解,其实类型基本上都是工厂函数。但是,有时候我们想用此方法传入一个常量,这个时候就需要自己单独设计一个常量函数或者直接使用lambda表达式。

先看如下的示范:

>>> fromcollections import defaultdict
>>> c1 =defaultdict(int)
>>>c1.get(123)
>>>c1.get('abc')
>>> defConst():
return 23
>>> c2 =defaultdict(Const)
>>>c2.get(123)
>>> c2
defaultdict(<functionConst at 0x000001D7E26F58C8>, {})
>>>c2[123]
23
>>>c2['abc']
23
>>>c1[123]
0

从上面可以看出,这种方式可以为一个字典对象不存在的key自动给出一个默认的value。用上面的这种方式自然是可以实现value为某个常量,但是使用lambda可以使得代码更为简洁:

>>> c3 =defaultdict(lambda :123)
>>>c3[12]
123

在最近遇到的使用场景中,这种方法能够让代码变得简洁不少,而习惯后的代码可读性也没有任何影响。

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python 实现文件的递归拷贝实现代码
Aug 02 Python
Python内置数据类型详解
Aug 18 Python
粗略分析Python中的内存泄漏
Apr 23 Python
Python实现Sqlite将字段当做索引进行查询的方法
Jul 21 Python
python虚拟环境的安装配置图文教程
Oct 20 Python
Python读取Json字典写入Excel表格的方法
Jan 03 Python
Python温度转换实例分析
Jan 17 Python
Python自动化运维之Ansible定义主机与组规则操作详解
Jun 13 Python
python:目标检测模型预测准确度计算方式(基于IoU)
Jan 18 Python
python Gabor滤波器讲解
Oct 26 Python
Python和Bash结合在一起的方法
Nov 13 Python
Python3.8官网文档之类的基础语法阅读
Sep 04 Python
Python3 实现随机生成一组不重复数并按行写入文件
Apr 09 #Python
python生成不重复随机数和对list乱序的解决方法
Apr 09 #Python
解决Python的str强转int时遇到的问题
Apr 09 #Python
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
Apr 09 #Python
Python序列循环移位的3种方法推荐
Apr 09 #Python
python中将一个全部为int的list 转化为str的list方法
Apr 09 #Python
python修改list中所有元素类型的三种方法
Apr 09 #Python
You might like
深思 PHP 数组遍历的差异(array_diff 的实现)
2008/03/23 PHP
mysql总结之explain
2012/02/27 PHP
Javascript 对象的解释
2008/11/24 Javascript
javascript间隔定时器(延时定时器)学习 间隔调用和延时调用
2014/01/13 Javascript
利用浏览器全屏api实现js全屏
2014/01/16 Javascript
用JavaScript实现用一个DIV来包装文本元素节点
2014/09/09 Javascript
zepto.js中tap事件阻止冒泡的实现方法
2015/02/12 Javascript
初步了解javascript面向对象
2015/11/09 Javascript
浅谈DOCTYPE对$(window).height()取值的影响
2016/07/21 Javascript
Ajax与服务器(JSON)通信实例代码
2016/11/05 Javascript
javascript中闭包概念与用法深入理解
2016/12/15 Javascript
微信小程序组件之srcoll-view的详解
2017/10/19 Javascript
手把手教你使用vue-cli脚手架(图文解析)
2017/11/08 Javascript
jQuery与vue实现拖动验证码功能
2018/01/30 jQuery
vue2.0 循环遍历加载不同图片的方法
2018/03/06 Javascript
javascript实现简单页面倒计时
2021/03/02 Javascript
[04:10]2016国际邀请赛中国区预选赛第二日TOP10精彩集锦
2016/06/28 DOTA
[01:01:04]2018DOTA2亚洲邀请赛 4.5 淘汰赛 OpTic vs TNC 第一场
2018/04/06 DOTA
Python实现嵌套列表及字典并按某一元素去重复功能示例
2017/11/30 Python
Python模块WSGI使用详解
2018/02/02 Python
python里 super类的工作原理详解
2019/06/19 Python
在python 中split()使用多符号分割的例子
2019/07/15 Python
解决Python3用PIL的ImageFont输出中文乱码的问题
2019/08/22 Python
20行Python代码实现视频字符化功能
2020/04/13 Python
解决Python Matplotlib绘图数据点位置错乱问题
2020/05/16 Python
Python类及获取对象属性方法解析
2020/06/15 Python
FLIR美国官网:热成像, 夜视和红外摄像系统
2018/07/13 全球购物
Juicy Couture Beauty官方网站:香水和化妆品
2019/03/12 全球购物
静态变量和实例变量的区别
2015/07/07 面试题
高中打架检讨书
2014/02/13 职场文书
成绩报告单家长评语
2014/12/30 职场文书
2015年结对帮扶工作总结
2015/05/04 职场文书
Mysql MVCC机制原理详解
2021/04/20 MySQL
MySQL图形化管理工具Navicat安装步骤
2021/12/04 MySQL
Vue+Flask实现图片传输功能
2022/04/01 Vue.js
《勇者辞职不干了》ED主题曲无字幕动画MV公开
2022/04/13 日漫