Список как значение словаря не получает ничего после вызова __missing__

#python #list #dictionary #nonetype

#python #Список #словарь #нетипичный

Вопрос:

 class ChapterDict(dict):
    def __missing__(self, key):
        res = self[key] = []
        return res
  

У меня есть этот пользовательский словарь. Если ключ еще не существует, следует создать новую пару ключ: значение, тогда как значение должно быть пустым списком (строк). Позже у меня будет мой экземпляр

 chapters = ChapterDict()
  

и хотел бы сохранить подобные значения.

 chapters[processed_key] = chapters[processed_key].append(section)
  

Если я сделаю

 print(chapters)
  

В результате я получаю {'0': None, '1': None, '2': None, '3': None} , так что ключи правильные, но список есть None .

В чем моя проблема?

Ответ №1:

append добавляет элемент в список и возвращает None , которому вы затем присваиваете (перезаписываете) значение для данного ключа. Отбросьте назначение, и все должно быть в порядке:

 chapters[processed_key].append(section)