运维开发网

在Python中在初始化时填充defaultdict

运维开发网 https://www.qedev.com 2020-05-19 17:41 出处:网络 作者:运维开发网整理
我怎样才能获得一个可调用的工厂用于defaultdict以允许用理解填充它?我认为这可能不可能,但我想不出一个很好的理由呢?
我怎样才能获得一个可调用的工厂用于defaultdict以允许用理解填充它?我认为这可能不可能,但我想不出一个很好的理由呢?

>>> def foo(*args):
...     # TODO
...
>>> from collections import defaultdict
>>> thing = foo(defaultdict, int)
>>> d = thing((i, i*i) for i in range(3))
>>> d[2]
# should return 4
>>> d[-1]
# should return 0
default_factory之后对defaultdict的任何参数都被视为与dict的参数一样:

>>> defaultdict(int, [(i, i*i) for i in range(5)])
defaultdict(<type 'int'>, {0: 0, 1: 1, 2: 4, 3: 9, 4: 16})

只需将理解传递给defaultdict并让它完成工作:

def defaultdict_factory_factory(default_factory):
    def defaultdict_factory(*args, **kwargs):
        return defaultdict(default_factory, *args, **kwargs)
    return defaultdict_factory

或者使用functools.partial:

def defaultdict_factory_factory(default_factory):
    return partial(defaultdict, default_factory)

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号