为了优化一些代码,我使用了以下内容:
a = defaultdict(lambda: len(a))
a[0] = 0
a[1] = 1
a[7] = 2
...
现在我的问题是我需要一个嵌套的默认dict,即
b = defaultdict(lambda: defaultdict(lambda: len(b[?]))
b[0][0] = 0
b[0][1] = 1
b[1][0] = 0
b[1][1] = 1
...
提前感谢...
def enumdict():
a = defaultdict(lambda : len(a))
return a
b = defaultdict(enumdict)
如果你想把它变成一个类:
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
您通常不能在 lambda 中执行此操作,因为您需要将子默认字典分配给变量以便之后能够获得其 len,这在 lambda 中是不可能的。 @Duncan想出了一个使用列表推导来充当分配的解决方法。干得好:)但不使用它..:D