【发布时间】:2014-02-01 22:38:48
【问题描述】:
我怎样才能为 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
【问题讨论】:
-
我不明白你在做什么。什么是
thing和foo,为什么thing应该返回0? -
澄清一下:
thing((i, i*i) for i in range(3))应该返回一个defaultdict实例。我将编辑问题以使其更清晰 -
哦,好吧,
-1让我觉得这是一个列表,而不是缺失的索引。如果你想要一个可以做到这一点的default_factory,我不认为它可以做到,因为(来自文档)“默认工厂被称为 没有参数当键不存在时产生一个新值,仅在 getitem 中。"
标签: python list-comprehension defaultdict generator-expression