Creating a defaultdict with empty numpy array

I'm wondering if there's a more clever way to create a default dict from collections. The dict should have an empty numpy ndarray as default value.

My best result is so far:

import collections
d = collections.defaultdict(lambda: numpy.ndarray(0))

However, i'm wondering if there's a possibility to skip the lambda term and create the dict in a more direct way. Like:

d = collections.defaultdict(numpy.ndarray(0))  # <- Nice and short - but not callable


  • You can use functools.partial() instead of a lambda:

    from collections import defaultdict
    from functools import partial
    defaultdict(partial(numpy.ndarray, 0))

    You always need a callable for defaultdict(), and numpy.ndarray() always needs at least one argument, so you cannot just pass in numpy.ndarray here.