python的defaultdict

本文详细介绍了Python中defaultdict的使用方法及原理。defaultdict是dict的一个子类,它会在访问不存在的键时返回由工厂函数产生的默认值。文章通过示例展示了如何定义默认工厂函数,并比较了有无工厂函数时defaultdict的行为差异。

defaultdict是dict的一个子类,接受一个工厂函数作为参数,当访问defaultdict中不存在的key时,会将工厂函数的返回值作为默认的value。

class defaultdict(dict):
    """
    defaultdict(default_factory[, ...]) --> dict with default factory
    
    The default factory is called without arguments to produce
    a new value when a key is not present, in __getitem__ only.
    A defaultdict compares equal to a dict with the same items.
    All remaining arguments are treated the same as if they were
    passed to the dict constructor, including keyword arguments.
    """

测试代码

完整代码: https://github.com/blackmatrix7/python-learning/blob/master/other/defaultdict.py

__author__ = 'blackmatrix'


def factory_func():
    return 'default_factory'

test_defaultdict = defaultdict(factory_func)

if __name__ == '__main__':
    '''
    当key存在时,返回的是key对应的value
    这个时候和普通的dict没有什么区别
    '''
    test_defaultdict['a'] = '233333'
    print(test_defaultdict['a'])
    '''
    当访问不存在的key时,自动将工厂函数的返回值作为默认值
    '''
    print(test_defaultdict['b'])
    print(test_defaultdict['c'])

运行结果

233333
default_factory
default_factory

 

如果defaultdict在创建的时候没有传入工厂函数,则在访问不存在的key时,会抛出KeyError

from collections import defaultdict

test_defaultdict2 = defaultdict()

print(test_defaultdict2['x'])

# KeyError: 'x'

 

转载于:https://www.cnblogs.com/blackmatrix/p/6905790.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值