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中time模块与datetime模块在使用中的不同之处
Nov 24 Python
python实现用户登录系统
May 21 Python
linux环境下python中MySQLdb模块的安装方法
Jun 16 Python
基于Python中单例模式的几种实现方式及优化详解
Jan 09 Python
python TCP Socket的粘包和分包的处理详解
Feb 09 Python
python爬取各类文档方法归类汇总
Mar 22 Python
Python3之简单搭建自带服务器的实例讲解
Jun 04 Python
Python 对输入的数字进行排序的方法
Jun 23 Python
Python常用数据类型之间的转换总结
Sep 06 Python
基于Tensorflow的MNIST手写数字识别分类
Jun 17 Python
浅谈pytorch中stack和cat的及to_tensor的坑
May 20 Python
Python利用机器学习算法实现垃圾邮件的识别
Jun 28 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 htmlentities和htmlspecialchars 的区别
2008/08/18 PHP
php使浏览器直接下载pdf文件的方法
2013/11/15 PHP
php函数实现判断是否移动端访问
2015/03/03 PHP
PHP实现的各类hash算法长度及性能测试实例
2017/08/27 PHP
Some tips of wmi scripting in jscript (1)
2007/04/03 Javascript
控制页面按钮在后台执行期间不重复提交的JS方法
2013/06/24 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
2014/03/20 Javascript
判断及设置浏览器全屏模式
2014/04/20 Javascript
JavaScript对象数组排序函数及六个用法
2015/12/23 Javascript
用原生js统计文本行数的简单示例
2016/08/19 Javascript
AngularJS基于ui-route实现深层路由的方法【路由嵌套】
2016/12/14 Javascript
详解使用fetch发送post请求时的参数处理
2017/04/05 Javascript
简述jQuery Easyui一些用法
2017/08/01 jQuery
JavaScript 中的12种循环遍历方法【总结】
2018/05/31 Javascript
Nuxt升级2.0.0时出现的问题(小结)
2018/10/08 Javascript
Element Cascader 级联选择器的使用示例
2020/07/27 Javascript
js实现盒子滚动动画效果
2020/08/09 Javascript
Python中的time模块与datetime模块用法总结
2016/06/30 Python
使用Python实现博客上进行自动翻页
2017/08/23 Python
pytorch 中pad函数toch.nn.functional.pad()的用法
2020/01/08 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
2020/03/01 Python
python实现最速下降法
2020/03/24 Python
使用py-spy解决scrapy卡死的问题方法
2020/09/29 Python
英国最大的百货公司:Harrods
2016/08/18 全球购物
Ancheer官方户外和运动商店:销售电动自行车
2019/08/07 全球购物
一套带网友答案的.NET笔试题
2016/12/06 面试题
旅游管理实习自我鉴定
2013/09/29 职场文书
技术总监个人的自我评价范文
2013/12/18 职场文书
初二政治教学反思
2014/01/12 职场文书
二年级数学教学反思
2014/01/21 职场文书
供电工程专业求职信
2014/08/09 职场文书
普通党员对照检查材料
2014/09/24 职场文书
2014年环境卫生工作总结
2014/11/24 职场文书
2015年百日安全活动总结
2015/03/26 职场文书
小学生作文之《压岁钱的烦恼》
2019/09/27 职场文书
分析SQL窗口函数之排名窗口函数
2022/04/21 Oracle