我想知道是否有更聪明的方法来从集合创建默认字典。 字典应该有一个空的 numpy ndarray 作为默认值。
迄今为止我最好的成绩:
import collections
d = collections.defaultdict(lambda: numpy.ndarray(0))
但是,我想知道是否有可能跳过 lambda 项并以更直接的方式创建字典。喜欢:
d = collections.defaultdict(numpy.ndarray(0)) # <- Nice and short - but not callable
您可以使用
functools.partial()
代替 lambda:
from collections import defaultdict
from functools import partial
defaultdict(partial(numpy.ndarray, 0))
你always需要一个
defaultdict()
的可调用对象,而numpy.ndarray()
always需要至少一个参数,所以你不能只在这里传入numpy.ndarray
。
如果您事先知道数组大小,另一种方法如下:
new_dict = defaultdict(lambda: numpy.zeros(array_size))