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正则分组的应用
Nov 10 Python
Python中使用装饰器和元编程实现结构体类实例
Jan 28 Python
解密Python中的描述符(descriptor)
Jun 03 Python
利用numpy和pandas处理csv文件中的时间方法
Apr 19 Python
Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str
Aug 07 Python
python爬虫 正则表达式解析
Sep 28 Python
python 监测内存和cpu的使用率实例
Nov 28 Python
jupyter修改文件名方式(TensorFlow)
Apr 21 Python
Python ORM框架Peewee用法详解
Apr 29 Python
Python3爬虫里关于代理的设置总结
Jul 30 Python
Pandas的数据过滤实现
Jan 15 Python
python自动获取微信公众号最新文章的实现代码
Jul 15 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
56.com视频采集接口程序(PHP)
2007/09/22 PHP
php模拟服务器实现autoindex效果的方法
2015/03/10 PHP
js bind 函数 使用闭包保存执行上下文
2011/12/26 Javascript
jQuery回到顶部的代码
2016/07/09 Javascript
jQuery操作cookie
2016/08/08 Javascript
利用jquery实现下拉框的禁用与启用
2016/12/07 Javascript
深入理解javascript的getTime()方法
2017/02/16 Javascript
利用forever和pm2部署node.js项目过程
2017/05/10 Javascript
Bootstrap与Angularjs的模态框实例代码
2017/08/03 Javascript
AngularJS 控制器 controller的详解
2017/10/17 Javascript
详解Vue组件实现tips的总结
2017/11/01 Javascript
layui动态表头的实现代码
2019/08/22 Javascript
开发Node CLI构建微信小程序脚手架的示例
2020/03/27 Javascript
浅谈vue权限管理实现及流程
2020/04/23 Javascript
通过angular CDK实现页面元素拖放的步骤详解
2020/07/01 Javascript
JavaScript中变量提升和函数提升的详解
2020/08/07 Javascript
[01:09:23]KG vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python实现对比不同字体中的同一字符的显示效果
2015/04/23 Python
Pandas之drop_duplicates:去除重复项方法
2018/04/18 Python
浅谈django rest jwt vue 跨域问题
2018/10/26 Python
Python标准库使用OrderedDict类的实例讲解
2019/02/14 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
2019/07/06 Python
Pyspark读取parquet数据过程解析
2020/03/27 Python
解决django FileFIELD的编码问题
2020/03/30 Python
最新pycharm安装教程
2020/11/18 Python
巴西图书和电子产品购物网站:Saraiva
2017/06/07 全球购物
到底Java是如何传递参数的?是by value或by reference?
2012/07/13 面试题
小学数学课后反思
2014/04/23 职场文书
实践单位评语
2014/04/26 职场文书
我们的节日元宵节活动总结
2015/02/06 职场文书
教师远程培训心得体会
2016/01/09 职场文书
Django程序的优化技巧
2021/04/29 Python
详细聊聊关于Mysql联合查询的那些事儿
2021/10/24 MySQL
python周期任务调度工具Schedule使用详解
2021/11/23 Python
css实现左上角飘带效果的完整代码
2022/03/18 HTML / CSS
PYTHON InceptionV3模型的复现详解
2022/05/06 Python