我明白collections.defaultdict是这样分配的默认值的字典:怀疑
dict = collections.defaultdict(int) # default value of dict is 0
或
dict = collections.defaultdict(lambda: 5) # default value of dict is 5
然后我看到defaultdict的Python中像使用这个:
_dict = lambda : collections.defaultdict(_dict)
dict = _dict()
dict = dict["A"]
dict = dict["B"]
dict = dict["C"]
我很困惑的第一行:
_dict = lambda: collections.defaultdict(_dict)
什么是默认值?它似乎是一个无限的递归。
也许你在某处忘了'lambda'?例如,请参阅[如何将defaultdicts的defaultdict [defaultdicts \]转换为dicts \ [dicts \]的词典?](// stackoverflow.com/q/26496831),例如使用'递归'定义。这里的诀窍是'工厂'不会抬头,直到你*打电话给'工厂',在这个点上名称存在.. –
@MartijnPieters忘了添加lambda。查看我的更新 – derek
是的,它是递归的,但并不是无止境的。正如Martijn所说:“有一个诀窍,那就是只有在你打电话给'工厂'之前,'工厂'才会被抬起。 –