python的defaultdict

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python的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‘

 

以上是关于python的defaultdict的主要内容,如果未能解决你的问题,请参考以下文章

了解 Python 中 defaultdict 的使用 [重复]

python 中的defaultdict 用法

python的defaultdict

python字典之defaultdict详解

python中的defaultdict和orderdict

在python中按值对defaultdict进行排序