首页 > 其他分享 >defaultdict详解

defaultdict详解

时间:2023-06-27 09:55:05浏览次数:39  
标签:defaultdict 函数 默认 详解 dict 默认值 my

defaultdict详解

  • 今天在看博文的时候,无意间看到了defaultdic的用法,觉得挺有意思的,分享下

  • defaultdict是一个字典(dict)的子类,它提供了一种更方便的方式来处理缺失键(key)的情况。与普通的字典不同,defaultdict在初始化时需要指定一个默认工厂函数(default factory function),该函数用于提供缺失键的默认值。

  • 下面是defaultdict的基本用法示例:

from collections import defaultdict

# 定义一个默认工厂函数,返回默认值为0的整数
def default_factory():
    return 0

# 创建一个defaultdict对象,并指定默认工厂函数
my_dict = defaultdict(default_factory)

# 使用defaultdict对象
my_dict['apple'] = 1
my_dict['banana'] = 2

print(my_dict['apple'])     # 输出: 1
print(my_dict['banana'])    # 输出: 2
print(my_dict['orange'])    # 输出: 0(缺失的键返回默认值0)



#当然,我们在统计元素的个数时也可以这样用
from collections import defaultdict
words= ('a', 'b', 'c', 'a','a', 'a', 'b', 'd')
counts = defaultdict(lambda: 0) #不存在就默认为1
for word in words:
    counts[word ] += 1 #存在就+1


在上面的例子中,我们首先定义了一个默认工厂函数default_factory,它返回默认值为0的整数。然后,我们创建了一个defaultdict对象my_dict,并将默认工厂函数传递给它。接下来,我们像使用普通字典一样操作my_dict,将一些键值对存储其中。

当我们访问已存在的键(例如'apple''banana')时,defaultdict的行为与普通字典相同,返回键对应的值。然而,当我们访问不存在的键(例如'orange')时,defaultdict会自动调用默认工厂函数,并返回默认值0。

使用defaultdict的好处是,它可以简化代码,避免了在访问缺失键时手动处理KeyError异常或编写额外的判断逻辑来设置默认值。默认工厂函数可以根据需要返回不同类型的默认值,例如空列表、空集合等。

需要注意的是,在使用defaultdict时,如果在构建字典时没有指定默认工厂函数,则会引发TypeError。因此,务必在创建defaultdict对象时指定一个有效的默认工厂函数。

标签:defaultdict,函数,默认,详解,dict,默认值,my
From: https://www.cnblogs.com/yangzilaing/p/17507879.html

相关文章

  • 强化学习从基础到进阶-常见问题和面试必知必答[6]:演员-评论员算法(advantage actor-cri
    强化学习从基础到进阶-常见问题和面试必知必答[6]:演员-评论员算法(advantageactor-critic,A2C),异步A2C、与生成对抗网络的联系等详解1.核心词汇优势演员-评论员(advantageactor-critic,A2C)算法:一种改进的演员-评论员(actor-critic)算法。异步优势演员-评论员(asynchronousadvanta......
  • 强化学习从基础到进阶-常见问题和面试必知必答[6]:演员-评论员算法(advantage actor-cri
    强化学习从基础到进阶-常见问题和面试必知必答[6]:演员-评论员算法(advantageactor-critic,A2C),异步A2C、与生成对抗网络的联系等详解1.核心词汇优势演员-评论员(advantageactor-critic,A2C)算法:一种改进的演员-评论员(actor-critic)算法。异步优势演员-评论员(asynchronousadvant......
  • 组合模式详解
    简介组合模式(Composite)是针对由多个节点对象(部分)组成的树形结构的对象(整体)而发展出的一种结构型设计模式,它能够使客户端在操作整体对象或者其下的每个节点对象时做出统一的响应,保证树形结构对象使用方法的一致性,使客户端不必关注对象的整体或部分,最终达到对象复杂的层次结构与......
  • WebRTC-STUN协议详解
    1、STUN协议概述STUN(SessionTraversalUtilitiesforNAT)NAT会话穿透工具,STUN是一个Client/Server协议,支持请求/响应类型、指示类型两种类型。STUN作为ICE(InteractiveConnectivityEstablishment,交互式连接建立)解决方案的一种工具使用,STUN协议本身没有穿透等能力,只是为穿透提供反......
  • 详解自动化面试常见算法题!!
    1、实现一个数字的反转,比如输入12345,输出54321num=12345num_str=str(num)reversed_num_str=num_str[::-1]reversed_num=int(reversed_num_str)print(reversed_num)#输出54321代码解析:首先将输入的数字转换为字符串,然后使用切片操作将字符串反转,最后再将反转......
  • traceroute命令详解
    目录traceroute命令详解traceroute命令详解traceroute命令用于显示数据包到主机间的路径,预设数据包大小是40Bytes。安装命令: yuminstalltraceroute命令格式: traceroute[-46dFITUnreAV][-f存活数值][-g网关][-i网络界面][-m存活数值][-p端口][-s来源地址][-q......
  • cpuinfo详解
    目录cpuinfo详解1、通过cat/proc/cpuinfo查看2、通过lscpu命令进行查看3、逻辑核数、物理cpu、线程数关系4、查看cpu相关信息命令cpuinfo详解linux系统,cpu相关信息是保存在中/proc/cpuinfo文件中。1、通过cat/proc/cpuinfo查看[root@root~]#cat/proc/cpuinfoproces......
  • meminfo详解
    目录meminfo详解1、通过cat/proc/meminfo查看2、查看显示内存状态:free[option][-s<间隔秒数>]3、查看虚拟内存使用状态:vmstat[option]4、清理缓存meminfo详解Linux系统内存使用状况主要存储在/proc/meminfo中,”free”、”vmstat”等命令就是通过它获取数据的。1、通过......
  • AI绘画:Roop插件的使用详解!
    roop插件有哪些特性,如果安装,已经在上一篇讲的非常详细了。不知道你们装得怎么样了? ​ 今天,来详细的说一说roop插件的使用。首先呢启动我们的Stable-Diffusion-WebUI,然后确保插件已经启用! ​ 选择好模型,查看插件情况,一切准备......
  • Linux top详解
    lnux下用top命令查看cpu利用率超过100%  这里显示的所有的cpu加起来的使用率,说明你的CPU是多核,你运行top后按大键盘1看看,可以显示每个cpu的使用率,top里显示的是把所有使用率加起来。注意:按下1后显示的是逻辑cpu的个数,并不代表cpu的真实核数。 第一行:top-11:09:......