Конструктор defaultdict
ожидает вызова. defaultdict(int)
является объектом словаря по умолчанию, а не вызываемым. Использование lambda
может работать, однако:
c = collections.defaultdict(lambda: collections.defaultdict(int))
Это работает, поскольку то, что я передаю внешнему defaultdict
, является вызываемым, которое создает новый defaultdict
при вызове.
Вот пример:
>>> import collections
>>> c = collections.defaultdict(lambda: collections.defaultdict(int))
>>> c[5][6] += 1
>>> c[5][6]
1
>>> c[0][0]
0
>>>