Почему 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'. –
Отлично! благодаря –