「每天一个Python实用技巧」5.注意defaultdict自动创建不存在的key的问题

大家好,我是冲冲,一名主要从事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
GitHub: https://github.com/streamDream
**具有MySQL的ORM和Client功能的库(pip install mysql-stream),欢迎大家下载使用,多多交流**
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值