【这是"冲谈技术"的第5篇原创文章】
大家好,我是冲冲,一名主要从事Python服务端开发的程序猿。
以后我会时不时在这里和大家分享服务端软件实际开发工作中用到的实用技术,这些都是历年实践经验的积累,希望大家喜欢!
今天给大家分享的实用技巧是注意defaultdict自动创建不存在的key的问题,希望对大家有所帮助和启发。
首先,我们来看下defaultdict自动创建不存在的key的问题样例。
示例代码如下:
from collections import defaultdict
def defaultdict_demo():
"""
使用[]的方式访问dict中不存在的key会raise KeyError异常
使用[]的方式访问defaultdict中不存在的key,不会raise异常,但是会自动创建不存在的key
使用get()的方式访问defaultdict中不存在的key,不会raise异常,也不会自动创建不存在的key
"""
normal_dict = dict(a=1, b=2, c=3)
try:
normal_dict[4]
except KeyError as e: # raise异常
print('111 >>> normal dict KeyError')
default_dict = defaultdict(int)
default_dict['dk1'] = 1
default_dict['dk2'] = 2
default_dict['dk3'] = 3
try:
v4 = default_dict['dk4'] # 该方法会创建key-value
v5 = default_dict.get('dk5') # 该方法不会创建key-value
print('>>>> v4:', v4)
print('>>>> v5:', v5)
except KeyError as ie: # 不会异常
print('222 >>> default dict KeyError')
for k, v in default_dict.items():
print('333 >>> default dict (k, v) = ', (k, v))
输出为:
111 >>> normal dict KeyError
>>>> v4: 0
>>>> v5: None
333 >>> default dict (k, v) = ('dk1', 1)
333 >>> default dict (k, v) = ('dk2', 2)
333 >>> default dict (k, v) = ('dk3', 3)
333 >>> default dict (k, v) = ('dk4', 0)
从上面可见,使用[]的方式访问defaultdict中不存在的key,不会raise异常,但是会自动创建不存在的key。
但是,只要使用get的方式访问就不会出这个问题了。
相信大家已经了解了defaultdict自动创建不存在的key的问题。
好啦,今天的实用技巧分享就到这里!
欢迎大家多多和朋友分享我,订阅我,每天分享一个实用知识点,共成长,交个朋友!下期见~~
微信公众号: chongtanjishu
**具有MySQL的ORM和Client功能的库(pip install mysql-stream),欢迎大家下载使用,多多交流**