Python中defaultdict的用法

本文详细介绍了Python collections模块中的defaultdict类,解释了它是如何在字典中为不存在的键提供默认值,通过示例展示了defaultdict在计数和统计场景中的应用。

defaultdict是collection中的一个类。Python的官方定义如下:

class collections.defaultdict([default_factory[, ...]])

官方的解释如下:

defaultdic
dict subclass that calls a factory function to supply missing values

意思就是defaultdict作为dict的子类,当字典中不存在某个键值时,会为该键(字典中不存在该键名)创造一个工厂函数(default_facory,例如 int,str,list ,set等)类型的默认值。其与普通字典的区别如下:

defaultdict在dict的基础上添加了一个missing(key)方法, 在调用一个不存的key的时候, defaultdict会调用__missing__, 返回一个根据default_factory参数的默认值, 所以不会返回
Keyerror.

例如:

from collections import defaultdict
s = 'mississippi'
d = defaultdict(int)
for k in s:
  d[k] += 1
print(d)

运行结果如下:

defaultdict(<class 'int'>, {'m': 1, 'i': 4, 's': 4, 'p': 2})

在这个例子当中,调用的工厂函数为int,其默认值为0。当利用defaultdict创建某个键时,会自动为该字典添加默认值0作为键值。

from collections import defaultdict
s = 'mississippi'
d = defaultdict(int)
for k in s:
  print(d[k])
print(d.items())

运行结果如下:

0
0
0
0
0
0
0
0
0
0
0
dict_items([('m', 0), ('i', 0), ('s', 0), ('p', 0)])

代码中:初次执行print(d[k])时,如果k不在为字典d中,则会为字典添加键值对k:0,当再次执行
print(d[k])时,由于字典d中已经存在同名的键名,所以不会在进行新的添加。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值