Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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
like image 550
zinjaai Avatar asked Jul 29 '14 11:07

zinjaai


1 Answers

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.

like image 174
Martijn Pieters Avatar answered Sep 28 '22 08:09

Martijn Pieters