加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 在初始化时填充defaultdict

发布时间:2020-12-20 12:05:39 所属栏目:Python 来源:网络整理
导读:我怎样才能获得一个可调用的工厂用于defaultdict以允许用理解填充它?我认为这可能不可能,但我想不出一个很好的理由呢? def foo(*args):... # TODO... from collections import defaultdict thing = foo(defaultdict,int) d = thing((i,i*i) for i in range
我怎样才能获得一个可调用的工厂用于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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读