【python】collections.defaultdict()的用法

当我们使用 dict() 方法创建字典时,必须同时填入“键值对”。如果没有值填入,就会发生keyerror的错误。

dic = dict()
print(dic['key'])
# output: KeyError: 'key'

使用dict[key]=value时,若key不存在则报错;使用dict.get(key)时,若key不存在则会返回一个默认值。

可以使用setdefault()来避免错误。需要传入两个参数,第一个参数是键值,第二个参数是默认值,如果字典中不存在该键则返回默认值,如果存在该键则返回该值。

dic = dict()
print(dic.setdefault('key', 0))
# output: 0
print(dic)
# output: {'key': 0}

这种方法可以在字典中添加没有的键值对,进而修改原字典,字典的键和值分别对应两个参数。

另外,可以使用 collections.defaultdict() 来创建字典,直接就可以避免键不存在而报错的情况。

dict = collections.defaultdict(factory_function)

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

defaultdict() 的功能与 dict() 相同,但它带有一个默认的值,若key值不存在时返回一个默认的值。

from collections import defaultdict
 
dict1 = defaultdict(int)
print(dict1[0])
# output: 0
dict1[1] = 123
print(dict1[1])
# output: 123

dict2 = defaultdict(set)
print(dict2[0])
# output: set()

dict3 = defaultdict(str)
print(dict3[0])
# output: 

dict4 = defaultdict(list)
print(dict4[0])
# output: []


print(dict1)
print(dict2)
print(dict3)
print(dict4)
# output:
# defaultdict(<class 'int'>, {0: 0, 1: 123})
# defaultdict(<class 'set'>, {0: set()})
# defaultdict(<class 'str'>, {0: ''})
# defaultdict(<class 'list'>, {0: []})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值