If you want to make it a class:
class CountDict(defaultdict):
def __init__(self):
defaultdict.__init__(self, self.default_factory)
def default_factory(self):
sub = defaultdict()
sub.default_factory = sub.__len__
return sub
Usually you cannot do this in lambda, because you need to assign a child default dict to a variable in order to get its len later, which is not possible in lambdas. @Duncan came up with a workaround using list comprehension to act as an assignment. Good job :) but don't use it ..: D
source
share