defaultdict()语法

一、defaultdict产生的原因:

        当我使用普通的字典时,用法一般是dict={},添加元素的只需要dict[element] =value即,调用的时候也是如此,dict[element] = xxx,但前提是element字典里,如果不在字典里就会报错。

defaultdict的作用是在于,当字典里的key不存在但被查找时,返回的不是keyError而是一个默认值。

二、defaultdict函数:

函数:dict =defaultdict( factory_function)

1、常规用法:

        factory_function可以是list、set、str等等,作用是当key不存在时,返回的是工厂函数的默认值,比如list对应[ ],str对应的是空字符串,set对应set(),int对应0:

例如:

from collections import defaultdict
dict1 = defaultdict(int)
dict2 = defaultdict(set)
dict3 = defaultdict(str)
dict4 = defaultdict(list)
dict1[2] ='two'print(dict1[1])  # 0
print(dict2[1])  # set()
print(dict3[1])  #
print(dict4[1])  # []

2、自定义类型:

        factory_function如果传入的是类对象,那么默认值会调用类的构造函数并返回对应实例;如果是函数,则直接调用函数,并将函数返回值作为默认值。

例如:

from collections import defaultdictclass Cls:def __init__(self, val='hello'):self.val = valdef __str__(self):return self.valdef fun(val=121):return valdic_1 = defaultdict(Cls)
dic_2 = defaultdict(fun)print(dic_1['a'])  # hello
print(dic_2['a'])  # 121

3、重复调用问题:

当我们多次取不存在的相同key对应的默认值时,但它只会调用了一次取默认值函数。

例如:

from collections import defaultdictdef fun(val=121):print('创建了默认值')return valdic = defaultdict(fun) 
for i in range(1000):dic['a']            dic['b']

输出:

创建了默认值
创建了默认值

注意事项:只调用了一次dic['a'],调用一次dic['b'];

4、返回的默认值问题:

当key相同时返回的默认值是同一个对象;

当key不同时返回的默认值不是同一个对象;

例如:

from collections import defaultdictclass Cls:def __init__(self, val='hello'):self.val = valdef __str__(self):return self.valdic = defaultdict(Cls) print(dic['a']== dic['a'])   # True
print(dic['a']== dic['b'])   # False

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/16831.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

[HE phy]

前导码 5G OFDM分为两部分,前导码Legacy preamble和数据data 前导码类型: 其中前导码Legacy preamble分为:Legacy Short Traing (L-STF), L_LTF, L-SIG。 如果数据是HT/VHT/HE,则还有其对应格式的前导码。 各类型作用&#xff…

【matlab】数据类型01-数值型变量(整数、浮点数、复数、二进制和十六进制)

文章目录 一、 整数1.1 整数的最值1.2 大整数1.3 当整数值超过了uint64最大值1.4 和其它类型数值运算 二、 浮点数2.1 双精度和单精度2.2 浮点数的存储2.3 浮点数的最值2.4 浮点数的“四舍五入”2.5 浮点数的算术运算2.6 意外:舍入误差、抵消、淹没和中间转换 三、复…

Tessy学习笔记—requirement(需求)的管理

1:什么是需求 Tessy中的requirement(需求)是,我们还是跟着Tessy官方的文档,继续学习,打开官方自带的工程Is Value In Range Requirement.project。 按照官方自带的操作手册,导入txt类型的需求…

关于10款PDF编辑工具我的使用体验!!!!!

如今,pdf的使用已经见怪不怪。在我们的工作、学习和生活中都已经离不开PDF文档了。那我么,随之而来的问题也就是我们经常需要对PDF文件进行编辑。市面上已经出现了许多PDF编辑软件。下面,我将与大家分享一下这几款PDF编辑器的个人使用经历。 …

unity小:shaderGraph不规则涟漪、波纹效果

实现概述 在本项目中,我们通过结合 Sine、Polar Coordinates 和 Time 节点,实现了动态波纹效果。以下是实现细节: 核心实现 Sine 波形生成: 使用 Sine 节点生成基本的波形。该节点能够创建周期性变化,为波纹效果提供…

针对gitgitee的使用

1.下载git 链接 打开终端,桌面鼠标右键 2.配置密钥 登录gitee。 设置密钥 查看官方文档 跟着教程 复制最后的输出进行密钥添加 验证是否添加成功 3.创建&连接远程仓库 创建仓库 git终端进行配置 远程仓库克隆到本地 桌面终端clone,克隆他人|自己的仓库到本地…

基于yolov8、yolov5的玉米病害检测识别系统(含UI界面、训练好的模型、Python代码、数据集)

项目介绍 项目中所用到的算法模型和数据集等信息如下: 算法模型:     yolov8、yolov8 SE注意力机制 或 yolov5、yolov5 SE注意力机制 , 直接提供最少两个训练好的模型。模型十分重要,因为有些同学的电脑没有 GPU&#xff0…

省级生活垃圾无害化处理率面板数据(2004-2022年)

生活垃圾无害化处理率是指经过处理的生活垃圾中,达到无害化标准的垃圾所占的比例。这一指标的提高,意味着城市在垃圾处理方面的能力增强,能够有效减少环境污染,提升居民生活质量,同时也是城市可持续发展的重要保障。 …

NTIRE2024 | 修复一切图像RAIM: Restore All Image Model Challenge报告分析

论文/报告地址:NTIRE 2024 Restore Any Image Model (RAIM) in the Wild Challenge 0、写在前面 马上CVPR2024就要开幕,各大挑战赛的排名和详细报告也都出炉。近期留意到这个名字很屌的赛道,修复一切图像的模型,小米的团队的拿了…

【Visual Studio】设置文件目录

打开属性 输出目录:$(SolutionDir)bin\$(Platform)\$(Cinfiguration)\ 中间目录:$(SolutionDir)bin\intermediates\$(Platform)\$(Cinfiguration)\

基于Java的校园菜鸟驿站管理系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据…

Photoshop(PS)——人像磨皮

1.新建一个文件,背景为白色,将图片素材放入文件中 2.利用CtrlJ 复制两个图层出来,选择第一个拷贝图层,选择滤镜---杂色---蒙尘与划痕 3.调整一下数值,大概能够模糊痘印痘坑,点击确定。 4.然后选择拷贝2图层…

Yocto - 使用Yocto开发嵌入式Linux系统_13 创建定制层

Creating Custom Layers 除了使用社区或供应商提供的现有图层外,我们还将在本章中学习如何为我们的产品创建图层。此外,我们还将了解如何创建机器定义和分布,并从中获益,从而更好地组织我们的源代码。 In addition to using exist…

第5章-总体设计 5.2 需求转化为规格

5.2 需求转化为规格 1.框式产品(1)业务规格,这需要满足客户期望、有市场竞争力、颗粒度最合理。(2)整框规格,包括电源、功耗、散热、可靠性的规格,要保证整款满足环境应用要求。(3&a…

kali上安装docker,并且生成centos7容器和创建apache容器后台运行

声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&#…

4. Spring Cloud Ribbon 实现“负载均衡”的详细配置说明

4. Spring Cloud Ribbon 实现“负载均衡”的详细配置说明 文章目录 4. Spring Cloud Ribbon 实现“负载均衡”的详细配置说明前言1. Ribbon 介绍1.1 LB(Load Balance 负载均衡) 2. Ribbon 原理2.2 Ribbon 机制 3. Spring Cloud Ribbon 实现负载均衡算法-应用实例4. 总结&#x…

约克VRF中央空调新天氟地水/天氟热水,做冬日生活的温暖守护者

随着冬季的悄然降临,现代人对居家环境的舒适性要求愈发提升,如何在寒冷的季节里营造一个温暖、静谧且健康的居住空间,成为了时下关注的焦点。面对冬日空气干燥、寒气侵袭的挑战,约克VRF中央空调凭借其氟系统和水系统的跨界融合,为家庭带来了纵享四季的恣意体验,让温暖与舒适触手…

计算机提示mfc140u.dll丢失的五种解决方法,了解mfc140u.dll错误的几种修复方法

当你尝试打开某些程序时,突然出现错误提示,告知你系统缺少 mfc140u.dll 文件,这可能让你感到困惑和无助。mfc140u.dll 是 Microsoft Foundation Class (MFC) 库的一部分,对于运行很多由 Visual Studio 2015 使用 MFC 开发的应用程…

【SSL-RL】自监督强化学习: 好奇心驱动探索 (CDE)算法

📢本篇文章是博主强化学习(RL)领域学习时,用于个人学习、研究或者欣赏使用,并基于博主对相关等领域的一些理解而记录的学习摘录和笔记,若有不当和侵权之处,指出后将会立即改正,还望谅…

Windows系统 ElasticSearch,Kibana安装

目录 1.wins安装ElasticSearch2.将 elasticsearch 以服务的方式安装3. 在系统环境变量 Path 中添加如下路径4.启动点击即可5.双击 elasticsearch.bat 启动 elasticsearch 服务6.启动后第一次会显示一些配置信息,包括默认的用户密码 先记住 记不住的话可以重置密码7.验证安装结果…