1
为什么reduce()
不与defaultdict
对象在以下情况下工作:减少不能用于collections.defaultdict?
>>> from collections import defaultdict
>>> d = defaultdict(lambda: defaultdict(int))
>>> reduce(dict.get, [1,2], d)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: descriptor 'get' requires a 'dict' object but received a 'NoneType'
以上reduce
相当于d[1][2]
,所以我预计0
,即默认返回值作为输出,但我得到了一个NoneType
例外代替。
如果我使用d[1][2]
,如下所示正常工作:
>>> d[1][2]
0
难道我做错了什么?
为什么使用dict .__ getitem__而不是defaultdict .__ getitem__是正确的? – Hammerite
@Hammerite:你可以使用; 'defaultdict'是'dict'的一个子类。 –
完美!谢谢 –