Python学习小技巧之利用字典的默认行为
作者:tinyid 发布时间:2021-10-10 23:48:29
本文介绍的是关于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匿名函数,可以使用自己定义的类型
总结
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
来源:http://blog.csdn.net/cnweike/article/details/53049059


猜你喜欢
- 前段时间在生活中偶尔需要对某些文件进行重命名,而且是随机名字,刚开始是手动重命名然后在键盘上胡乱打一些字母数字,时间长了发现也挺麻烦的,于是
- 合并在numpy中合并两个arraynumpy中可以通过concatenate,参数axis=0表示在垂直方向上合并两个数组,等价于np.v
- VueUse官方链接一、什么是VueUseVueUse不是Vue.use,它是为Vue 2和3服务的一套Vue Composition AP
- 最近很多小伙伴在尝鲜chatGPT,使用中遇到网站的1020的错误码,博主也遇到了相似的问题,不同的人运行环境不一样,可能解决方案不一样,接
- 字符串中字符大小写的变换1. str.lower() //小写>>> 'SkatE'.lower()
- 有个文本文件,需要替换里面的一个词,用python来完成,我是这样写的:def modify_text(): with open('
- 前言本系列文章开始介绍接口开源测试工具 --httprunner3的使用,基当前最新版本的3.1.6简介主要特点HttpRunner 是一款
- 最近使用pymysql写脚本的情况越来越多了,刚好整理,简单封装一个pymysql的操作类import pymysqlclass Mysql
- 开发环境说明:Python 35Pytorch 0.2CPU/GPU均可1、LSTM简介人类在进行学习时,往往不总是零开始,学习物理你会有数
- -- 任意的测试表 代码如下:CREATE TABLE test_delete( name varchar(10), value INT )
- 1.get_dummies()pandas.get_dummies(data, prefix=None, prefix_sep='_
- Dean Edwards 最近有篇文章很精彩,忍不住在这里翻译下。-- Split --很多 Javascript 框架都提供了自定义事件(
- 如果你有 express ,koa, redux 的使用经验,就会发现他们都有 中间件(middlewares)的概念,中间件 是一种 *
- 如下所示:def draw_circle(event,x,y,flags,param): global ix,iy,drawin
- 迭代dict的key和value我们了解了如何迭代 dict 的key和value,那么,在一个 for 循环中,能否同时迭代 key和va
- 爬虫的起因官方文档或手册虽然可以查阅,但是如果变成纸质版的岂不是更容易翻阅与记忆。如果简单的复制粘贴,不知道何时能够完成。于是便开始想着将A
- 本文实例讲述了Python HTML解析模块HTMLParser用法。分享给大家供大家参考,具体如下:简介先简略介绍一下。实际上,HTMLP
- 在使用Python的过程中,一定是离不开数据结构的, 也就是List-列表,Tuples-元组,Dictionaries-字典。那实际应用中
- flags参数re.I IGNORECASE 忽略字母大小写re.L &nb
- 缘由最近在做公司的一个点餐H5项目需要前端动态计算用户选的商品的总价(单价*数量)和购物车的总价格时发现关于 JavaScript 浮点数计