Python中使用defaultdict容器的用法

【Godot】构建可维护的游戏工程 —— 项目代码组织结构 本文系统梳理了Godot引擎项目组织原则与架构模式,提出场景中心化、命名规范一致性和资源隔离三大核心原则。推荐按功能模块划分目录结构(如scenes/、entities/、systems/),采用snake_case命名避免跨平台问题,并通过.gdignore优化资源管理。文章详细解析了自包含场景设计、信号驱动解耦等架构技巧,以及团队协作中的版本控制策略,强调通过模块化设计平衡一致性与实用性。最终目标构建清晰可维护的项目结构,使资源定位和功能扩展更加高效。(148字) 阅读详情

defaultdict VS Python中的dict

defaultdict 是一个像 dictionary 一样的容器,属于 collections 模块。它是 dictionary 的一个子类;因此它具有dictionary 的所有功能。然而,defaultdict 的唯一目的是处理KeyError 。

# return true if the defaultdict is a subclass of dict (dictionary)
from collections import defaultdict
print(issubclass(defaultdict,dict))

#输出:

True

假设一个用户在dictionary 中搜索一个条目,而搜索到的条目不存在。普通字典会出现一个KeyError ,这意味着该条目不存在。为了克服这个问题,Python开发者提出了defaultdict 的概念。

代码示例:

# normal dictionary
ord_dict = {
    "x" :3,
    "y": 4
}
ord_dict["z"]   # --> KeyError

#输出:

KeyError: 'z'

普通字典不能处理未知的keys ,当我们搜索一个未知的key 时,它会抛出KeyError ,如上面的代码所示。

另一方面,defaultdict 模块的工作方式与 Python 字典类似。尽管如此,它还是有先进的、有用的和用户友好的功能,当用户在字典中搜索一个未定义的键时,它不会抛出一个错误。

而是在字典中创建一个条目,并针对key 返回一个默认值。为了理解这个概念,让我们看看下面的实际部分。

代码示例:

from collections import defaultdict
# the default value for the undefined key
def def_val():
    return "The searched Key Not Present"
dic = defaultdict(def_val)
dic["x"] = 3
dic["y"] = 4
# search 'z' in the dictionary 'dic'
print(dic["z"]) # instead of a KeyError, it has returned the default value
print(dic.items())

#输出:

The searched Key Not Present
dict_items([('x', 3), ('y', 4), ('z', 'The searched Key Not Present')])

defaultdict 创建任何我们试图用键来访问的项目,这个键在字典中是未定义的。

并创建这样的default 项目,它调用我们传递给defaultdict 构造函数的函数对象,更准确地说,这个对象应该是一个callable 对象,包括类型对象和函数。

在上面的例子中,默认项是用def_val 函数创建的,它针对字典中未定义的键返回一个字符串The searched Key Not Present 。

Python 中的defaultdict

default_factory 是defaultdict 构造函数的第一个参数,它被__missing__() 方法使用,如果构造函数的参数缺失,default_factory 将被初始化为None ,这将产生KeyError 。

如果default_factory 的初始化参数不是None ,它将被分配为value ,并被搜索到key ,如上面的例子所示。

Python中defaultdict 的有用函数

有大量的dictionary 和defaultdict 的函数。正如我们所知,defaultdict 可以访问dictionary 的所有函数;然而,这些是一些专门针对defaultdict 的最有用的函数。

defaultdict.clear() 在Python中

代码示例:

from collections import defaultdict
# the default value for the undefined key
def def_val():
    return "Not Present"
dic = defaultdict(def_val)
dic["x"] = 3
dic["y"] = 4
print(f'Before clearing the dic, values of x = {dic["x"]} and y = {dic["y"]}')
dic.clear() #dic.clear() -> None. it will remove all items from dic.
print(f'After clearing the dic, values of x = {dic["x"]} and y = {dic["y"]}')

#输出:

Before clearing the dic, values of x = 3 and y = 4
After clearing the dic, values of x = Not Present and y = Not Present

正如我们在上面的例子中看到的,我们在字典dic 中有两对数据,其中x=3 和y=4 。然而,在使用clear() 函数后,数据被删除了,x 和y 的值不存在了,这就是为什么我们得到Not present 对抗x 和y 。

defaultdict.copy() 在Python中

代码示例:

from collections import defaultdict
# the default value for the undefined key
def def_val():
    return "Not Present"
dic = defaultdict(def_val)
dic["x"] = 3
dic["y"] = 4
dic_copy = dic.copy() # dic.copy will give you a shallow copy of dic.
print(f"dic = {dic.items()}")
print(f"dic_copy = {dic_copy.items()}")

#输出:

dic = dict_items([('x', 3), ('y', 4)])
dic_copy = dict_items([('x', 3), ('y', 4)])

defaultdict.copy() 函数用于将字典的浅层拷贝到另一个变量中,我们可以相应地使用。

defaultdict.default_factory() 在Python中

代码示例:

from collections import defaultdict
# the default value for the undefined key
def def_val():
    return "Not present"
dic = defaultdict(def_val)
dic["x"] = 3
dic["y"] = 4
print(f"The value of z = {dic['Z']}")
print(dic.default_factory()) # default_factory returns the default value for defaultdict.
#Python小白学习交流群:711312441
#输出:

The value of z = Not present
Not present

default_factory() 函数用于为定义的类的属性提供默认值,一般来说,default_factory 的值是由函数返回的值。

defaultdict.get(key, default value) 在Python中

代码示例:

from collections import defaultdict
# the default value for the undefined key
def def_val():
    return "Not present"
dic = defaultdict(def_val)
dic["x"] = 3
dic["y"] = 4
# search the value of Z in the dictionary dic; if it exists, return the value; otherwise, display the message
print(dic.get("Z","Value doesn't exist")) # default value is None

#输出:

Value doesn't exist

defaultdict.get() 函数需要两个参数,第一个是键,第二个是针对键的默认值,以防该值不存在。

但是第二个参数是可选的。所以我们可以指定任何信息或值;否则,它将显示None 作为默认值。

IDEA的使用指南 IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧. 立即下载

相关推荐

大模型训练和推理

大模型训练moe是指混合专家(Mixture-of-experts,简称MoE)的,这是一种用于提高大型神经网络性能的技术,它可以将模型的一部分替换为多个专家,每个专家只负责处理一部分输入数据,从而增加模型的参数量和表达能力,同时减少计算量和训练时间。指令可以作为模型的输入的一部分,也可以作为模型的输出的一部分,具体取决于任务的类型。上下文扩展技术的,这是一种用于提高大型语言模型(LLM)对长文本的处理能力的技术,它可以让模型在不增加参数量的情况下,扩展其注意力范围,从而提高模型的语言理解和生成能力。

weixin_45325331的博客 6025

Python高阶:counter、orderedDict、defaultdict、deque、queue简单示例

简介:python除了提供的内置数据类型(int、float、str、list、tuple、dict)外,collections模块还提供了其他数据类型,collections模块实现一些特定的数据类型,可以替代Python中常用的内置数据类型如dict, list, set, tuple,简单说就是对基本数据类型做了更上一层的处理。 主要类型:本模块只选deque、Counter、OrderedDict、defaultdict介绍。 namedtuple():用于创建具有命名字段的元组子类的工厂函数 de

we chat:玩转测试开发 641

糖果【贪心】

【问题描述】 有N(1≤N <100,000)N(1≤N~<100,000)N(1≤N <100,000)种不同类型的糖果,每种糖果数量无限多。第i种糖果每颗的价格是Pi(1≤Pi≤1018),有Ci(1≤Ci≤1018)P_i(1≤P_i≤10^{18}),有C_i (1≤C_i≤10^{18)}Pi​(1≤Pi​≤1018),有Ci​(1≤Ci​≤1018)头牛想吃这种糖果。 FarmerJohnFarmer JohnFarmerJohn拥有金钱BBB元(1≤B≤1

算法小猪的博客 797

Python中的defaultdict方法

返回指定键的值,如果值不在字典中返回default值返回:500hhh更多操作地址collections.defaultdict类的介绍该函数返回一个类似字典的对象。defaultdict是Python内建字典类(dict)的一个子类,它重写了方法_missing_(key),增加了一个可写的实例变量default_factory,实例变量default_factory被missing()方法使用,如果该变量存在,则用以初始化构造器,默认为None。其它的功能和dict一样,

panghuzhenbang的博客 2774

通过arcmap制作的第一张流域图

需要知道,识别河流依次需要填洼,流向,流量,栅格计算器,河流链接,河网分级.通过卫星图确定河流入口,在入口处画一个点,注意不要与其他河流相交。随后是进行对河流的筛选使用con函数,筛选流量大于100的河流。我们使用镶嵌工具-->镶嵌至新栅格 将两个数据合并。填洼后如图,随后进行流向的获得.使用流向工具。首先导入准备好的数据,可见两张图片并非一体。教程参考b站up:爱画地图的boney。惊醒栅格河网矢量化,进行河流分级。输入表面栅格数据,等待后如图。本次制作的是双峰县的流域图。输入流向数据,输出后如图。

pianmian1的博客 2230

低功耗设计:如何计算power switch的数量?

power switch加多了漏电高,加少了ir drop会有问题,具体加多少合适要如何计算呢?这里可以给一个参考方式。 第一步,先选switch cell的类型 通常选用HVT类型的switch cell,优点是漏电更低,缺点也很明显,电阻大,压降也大,switch cell的大小选择,可以选择(开启电阻x面积)最小的switch cell,即单位面积提供最小并联电阻的cell类型。 第二步,计算数量 选好类型,确定了开启电阻,可以按照如下公式计算数量: Ron/Xnum • W/V = V•P

m0_61544122的博客 3578

Python中字典的get()方法以及defaultdict

字典中的get()方法 先看代码: info_dict = {"name":"一条大树","age":18,"country":"中国"} print(info_dict.get("name")) print(info_dict["gender"]) #这行代码会抛异常 print(info_dict.get("gender")) print(info_dict.get("gender",

yitiaodashu的博客 3758

PCB板设置20H 原则理解

20H原则是PCB设计中抑制EMI辐射的关键方法,要求电源层比相邻地层内缩20倍介质厚度(20H)。在四层板中实现20H原则需采用S-G-P-S层叠结构,确保GND与PWR紧邻。具体步骤包括:确定GND-PWR间介质厚度H,计算20H值(通常80-120mil),并在设计软件中将电源层四周内缩20H,同时保持地层完整不内缩。注意避免常见误区,如混淆介质厚度、地层内缩等。该原则能有效限制边缘场辐射,降低EMI干扰,是四层板EMC设计的重要规范。

qq_37999850的博客 696

python设置默认字典(setdefault collections.defaultdict)

setdefault get collections defaultdictsetdefaultdict.setdefault(key, default=None)如果键不存在于字典中,将会添加新的键并将值设为默认值(改变了字典)。如果字典中包含有给定键,则返回该键对应的值,否则返回为该键设置的值。stu = [('wang', 1), ('zhang', 4), ('fu', 2), ('li',

whgyxy的博客 2万+

Sigrity Power DC Single-BoardPackage IR Drop Analysis模式进行单板压降仿真分析操作指导

如果需要单独对某个via设置参数,右侧选择Setup by padstack,下方下拉选择某个via,单独设置参数即可。举例:板厚1.6mm,内层1OZ(1.2mil,即0.03mm),铜皮宽度1mm,20度温升,允许通流I为2.5A。目的是模拟实际情况,via的孔壁电镀1mil,中间是空心的,让via不完全被填充金属成为实心via。Upper/lower Tolerance:上下公差,设置为5%,也就是压降允许的范围。电流密度计算公式:J=I/A(J为电流密度,I为电流,A为横截面积)

weixin_54787054的博客 699

Arch Linux 命令大全,值得收藏!

Arch Linux 是一款轻量级、高度可定制的 Linux 发行版,以其简洁和强大的特性深受高级用户喜爱。但对于新手来说,完全掌握 Arch Linux 的操作需要时间和实践。本文将为您详细介绍常用的 Arch Linux 命令,涵盖系统管理、文件操作、用户管理、软件安装与管理、网络配置和磁盘管理等内容,帮助您更高效地使用 Arch Linux。

网络技术联盟站 975

python中defaultdict方法的使用

默认值可以很方便 众所周知,在Python中如果访问字典中不存在的键,会引发KeyError异常(JavaScript中如果对象中不存在某个属性,则返回undefined)。但是有时候,字典中的每个键都存在默认值是非常方便的。例如下面的例子: strings = ('puppy', 'kitten', 'puppy', 'puppy', 'weasel', 'puppy'

daneil的专栏 6万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Python常用容器(defaultdict, deque, namedtuple)

与C++ STL所对应,这里我们来下Python常用的容器。 1. Counter (数数和排序) # 比如分析文本中每个单词出现过的次数,并只保留出现次数最高的若干个。 # Counter是一个dict子类,主要是用来对你访问的对象的频率进行计数。 # elements():返回一个迭代器,每个元素重复计算的个数,如果一个元素的计数小于1,就会被忽略。 # most_common([n]):返回一个列表,提供n个访问频率最高的元素和计数 # subtract([iterable-or-mapping.

Devlegal的博客 721

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【python进阶】常用效率函数和容器妙用(Map,Filter,defaultdict...)

记录一些python中的编程小技巧

GentleCP的博客 790

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

python3 defaultdict_Python 容器类型 defaultdict,给字典提供默认值

python 字典获取 key 报错怎么办?1 字典值获取在 python 语言当中,经常会用到 dict 字典这种数据类型。当在字典当中获取一个不存在的 key 时,会引发异常。比如在下面这个例子当中,gender 这个 key 在字典当中不存在,如果强行访问就会报错。#------- 正常字典报错user = {"name": "Lisa", "age": 18}user["gender"]报...

weixin_39636707的博客 370

python高级容器collections -- defaultdict

python高级容器collections -- defaultdict

qq_43745578的博客 1661

Python 之 collections 模块(含Counter, defaultdict, OrderedDict, namedtuple, deque, ChainMap 容器)详解

Python 之 collections 模块(含Counter, defaultdict, OrderedDict, namedtuple, deque, ChainMap 容器)详解

一些笔记 797

collections.defaultdict 是如何工作的?

我已经阅读了 python 文档中的示例,但仍然无法弄清楚这种方法的含义。有人可以帮忙吗?这是python文档中的两个示例和参数 int 和 list 是干什么用的?

HuntsBot的博客 1062

18、Python之容器:字典(dict)缺失值处理不够优雅?试试defaultdict

关于字典中缺失值处理的场景,本文首先介绍了dict中常规的分支判断的处理方法,以及通过setdefault()简化分支处理的方法。之后,引入defaultdict,介绍了更加灵活、强大的处理方法。根据实际使用场景,可以自行选择!

南宫理的日知录 975

Python进阶——容器(Collections)

Python容器包括: 1.defaultdict 与dict类型不同,你不需要检查key是否存在 from collections import defaultdict colours=(('yasoob','yellow'),('Ali','Blue')) favorite_colors=defaultdict(list) for name,colour in colours: fav...

zzh_AI的博客 318

python的容器

基础容器是 Python 核心:列表(可变有序)、元组(不可变有序)、字典(键值对映射)、集合(无序去重),覆盖绝大多数常规场景。容器选择依据:是否有序、是否可变、是否需要映射关系、是否需要去重,对应选择合适的容器类型。进阶容器(collections 模块):针对特定场景优化,如 defaultdict 解决键不存在问题、deque 提升两端操作效率、Counter 快速统计元素次数。

m0_68381723的博客 634

Python defaultdict

标准的字典对象包含一个setdefault方法,这个方法可以设置一个缺省值,当你通过字典对象的key取value的时候,如果找不到对应的key就返回这个缺省值。我们今天说的这个defaultdict方法可以在集合容器初始化的时候设置缺省值。比如下面的代码: import collections def default_factory(): return 'default value' d

信息爆炸时代,瞄准精华,过虑垃圾,方为赢家 1888

【python进阶攻略7】容器

我们也可以限制这个列表的大小,当超出你设定的限制时,数据会从对队列另一端被挤出去(pop)。另一种重要的是例子就是:当你在一个字典中对一个键进行嵌套赋值时,如果这个键不存在,会触发。,所以它们很轻量,与普通的元组比,并不需要更多的内存。,因为他按到了Shift键,或者输入了’CAT’,甚至’kitten’?一个元组是一个不可变的列表,你可以存储一个数据的序列,它和命名元组(你也不必使用整数索引来访问一个命名元组,这让你的代码更易于维护。,字段名称是’name’,‘age’和’type’。

kaggle expert,全球排名前1000,清华计算机研究生,兴趣算法工程 1309

update datetime类型_术业有专攻:容器类型模块collections

本文约2030字,建议阅读时间8~10分钟关键字:python,容器类型,collections,ChainMap,OrderedDict,defaultdict容器数据类型是内置基本数据类型(列表、元组、集合和字典)的补充,它主要包含如下容器类型:namedtuple带命名的元组子类deque两端操作的类似列表ChainMap多重映射的字典Counter可哈希对象的计数字典子类Orde...

weixin_39706491的博客 300

python容器类_Python之容器类Collections

容器类Collections标签(空格分隔): Python进阶defaultdictcounterdequenamedtupledefaultdictdefaultdict的作用是可以不用检查key是否存在,如果不存在可以直接创建。 而不像dict,会raise KeyError.示例代码:some_dict = {}some_dict['colours'] = "yellow"# Raises...

weixin_39781550的博客 112

Python之容器数据类型collections

Python的collections模块,提供了容器的数据类型,是对Python内置的常规容器的一个补充。 内置容器有 dict, list, set and tuple 本文对collections模块中常见的容器类型及用法,提供一些示例,仅供参考

fang_fang_2008的专栏 545
上一篇: Python中使用Pickle来保存对象和重载对象
下一篇: Python教程:sys模块中maxsize()的方法
Python热爱者
博客等级 码龄7年 3056粉丝 1330原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值