вложенный defaultdict: TypeError: первый аргумент должен быть вызываемым или None

Правильно создать вложенный defaultdict, чтобы избежать написания длинного кода.

Окончательный defaultdict должен выглядеть так:

dd = {str:{str:{str:{[]}}}}

Но когда я пытаюсь добавить элемент в список, он возвращает TypeError:

dd = defaultdict(lambda: defaultdict(lambda: defaultdict([])))

dd['something1']['something11']['something111'].append('something')

----> 1 dd = defaultdict (lambda: defaultdict (lambda: defaultdict ([])))

     TypeError: first argument must be callable or None

Вы знаете, в чем проблема?


person Milano    schedule 12.04.2018    source источник
comment
У этого не должно быть переменной глубины. Он имеет глубину 3, а внизу есть список.   -  person Milano    schedule 12.04.2018
comment
Самый внутренний изречение {[]}, похоже, не является изречением. Или я неправильно истолковал обозначения?   -  person CristiFati    schedule 12.04.2018
comment
@MilanoSlesarik Последнее объявление defaultdict следует немного изменить на defaultdict(lambda: []) или defaultdict(list).   -  person Fedir Alifirenko    schedule 12.04.2018
comment
Это не диктат, это список. Самый внутренний dict должен быть defaultdict со значениями списка.   -  person Milano    schedule 12.04.2018
comment
Самый внутренний dict {[]} содержит нехешируемый тип: 'list'. Там должна быть пара "ключ-значение".   -  person Rohit Barnwal    schedule 12.04.2018
comment
@FedirAlifirenko Спасибо. Я подумал, что обычно экземпляр создается таким образом: defaultdict ([]), но это был defaultdict (список) или defaultdict (lambda: [])   -  person Milano    schedule 12.04.2018