这篇教程Python中defaultdict与dict的差异详情写得很实用,希望能帮到您。 本文转自微信公众号:"算法与编程之美",
一、问题描述在collections 模块中的defauldict 使用时与dict 有何不同,为何我们用dict 中的key 值不存在时会报错,而defaudict 不会报错,下面做出解答。
二、解决方案以解决遇到的问题用来解答。 代码示例: import collections//引用collections模块dic=collections.defaultdict(int)//利用模块中的defauldict定义一个字典for num in range(10):dic[num]+=1//给字典赋值print(dic) 输出: defaultdict(<class 'int'>, {0: 1, 1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1, 7: 1, 8: 1, 9: 1})
从代码中可以看出引用了collections 模块中的defauldict() 属性,定义了一个字典,并为字典赋值以及增添了key值。可以看出最初dic 没有key 值时,字典返回的值为1;同理如果直接用dict 会产生什么结果呢? 代码示例: dic=dict()//定义一个字典for num in range(10):dic[num]+=1//赋值print(dic) 输出: 发生异常: KeyError 0 File "C:/Users/Hasee/Desktop/where2go-python-test/1906101031王卓越/类/ce_shi.py", line 81, in <module> dic[num]+=1
然而输出会出现报错,该错误是因为在dic() 中找不到相应的key 值,即在所定义的dic 中找不到num 值,但利用if条件语句也可以达到与defaultdict() 一样的效果。 代码示例: dic=dict()for num in range(10): if num not in dic: dic[num]=0//当dic中不存在num这个key值时,就添加num并赋值为0 dic[num]+=1print(dic) 输出: {0: 1, 1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1, 7: 1, 8: 1, 9: 1}
三、结语通过上述代码及结果,得知当定义一个字典没有相应的key 值时,defauldict() 会在字典中添加这个key值并赋值为0,而直接使用dict()来定义则会报错:找不到相应的key 值。但使用if语句来主动为key赋值,也能达到defaultdict() 一样的效果。 到此这篇关于Python 中defaultdict 与dict 的差异详情的文章就介绍到这了,更多相关Python中defaultdict与dict的差异内容请搜索51zixue.net以前的文章或继续浏览下面的相关文章希望大家以后多多支持51zixue.net! 提高Python生产力的五个Jupyter notebook插件 Python性能调优的十个小技巧总结 |