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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |