写点什么

python 方法——defaultdict 详解

作者:Wjq
  • 2022 年 3 月 08 日
  • 本文字数:1268 字

    阅读完需:约 4 分钟

python方法——defaultdict详解

什么是 defaultdict


python 中如果访问字典中不存在的键,会引发 KeyError 异常。defaultdict 完全可以当成字典来使用,但是它可以提供一个 default_factory 属性,该属性所指定的函数负责为不存在的 key 来生成 value。具体如下代码所示:

代码演示:


from collections import defaultdictmy_dict = {}# 使用int作为defaultdict的default_factory# 当key不存在时,将会返回int()函数的返回值my_defaultdict = defaultdict(int)print(my_defaultdict['a']) # 0print(my_dict['a']) # KeyError
输出结果:0---------------------------------------------------------------------------KeyError Traceback (most recent call last)<ipython-input-275-66c0f7dee2f4> in <module>() 5 my_defaultdict = defaultdict(int) 6 print(my_defaultdict['a']) # 0----> 7 print(my_dict['a']) # KeyError
KeyError: 'a'
复制代码

defaultdict 实现一键多值


defaultdict 实现一键多值的意思:我个人认为就是可以动态为对应键添加 value

代码演示

"""先定义一个字典,然后把defaultdict(list)赋值给字典,字典会被覆盖"""from collections import defaultdict
d={'a':[1,2,3],'b':[4,5]}print(d)
{'a': [1, 2, 3], 'b': [4, 5]}
d=defaultdict(list)print(d)
defaultdict(<class 'list'>, {})
"""先定义defaultdict(list),然后再把字典赋值,defaultdict也会被覆盖"""from collections import defaultdict
d=defaultdict(list)d={'a':[1,2,3],'b':[4,5]}print(d)
{'a': [1, 2, 3], 'b': [4, 5]}
print(d['a'])print(d)print(d['c'])
[1, 2, 3]{'a': [1, 2, 3], 'b': [4, 5]}---------------------------------------------------------------------------KeyError Traceback (most recent call last)<ipython-input-334-d7deff4162bb> in <module>() 1 print(d['a']) 2 print(d)----> 3 print(d['c'])
KeyError: 'c'

"""实现动态添加键值功能"""from collections import defaultdict
d=defaultdict(list)print(d)
defaultdict(<class 'list'>, {})
"""第一次运行以下代码块"""d['a'].append("python")print(d)print(d['a'])print(d['c'])
输出结果:defaultdict(<class 'list'>, {'a': ['python']})['python'][]
"""第二次运行以上代码块"""输出结果:defaultdict(<class 'list'>, {'a': ['python', 'python'], 'c': []})['python', 'python'][]
"""第三次运行该代码块,并为c赋值"""d['a'].append("python")d['c'].append("java")print(d)print(d['a'])print(d['c'])
输出结果:defaultdict(<class 'list'>, {'a': ['python', 'python', 'python'], 'c': ['java']})['python', 'python', 'python']['java']
复制代码

总结:


从以上代码可知:defaultdict 比直接定义的字典好用,当不知道当前字典是否有具体的某个键时,在查询键值时,不会发生错误。而且还可以为某个键动态赋值。

发布于: 2022 年 03 月 08 日阅读数: 37
用户头像

Wjq

关注

还未添加个人签名 2022.01.01 加入

磕盐界的代码女神,AI小菜鸡

评论

发布
暂无评论
python方法——defaultdict详解_Python_Wjq_InfoQ写作平台