调用__missing__后,列表作为字典的值变为None

问题描述

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

我有这个自定义词典。如果还不存在键,则应该创建一个新的key:value对,而该值应该是一个空列表(字符串)。以后我有我的实例

chapters = ChapterDict()

,并希望存储类似的值。

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

如果我愿意

print(chapters)

我得到{'0': None,'1': None,'2': None,'3': None}的结果,所以键是正确的,但列表是None

我怎么了?

解决方法

append将元素添加到列表中并返回None,然后您可以为其分配(覆盖)给定键的值。删除作业,您就可以了:

chapters[processed_key].append(section)