码迷,mamicode.com
首页 > 编程语言 > 详细

python的defaultdict

时间:2017-05-25 21:59:51      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:.com   port   返回值   code   cti   访问   ref   git   log   

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‘

 

python的defaultdict

标签:.com   port   返回值   code   cti   访问   ref   git   log   

原文地址:http://www.cnblogs.com/blackmatrix/p/6905790.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!