追加到不存在的嵌套defaultdict条目

时间:2018-07-29 14:37:31

标签: python

我正在创建一个小的记录程序包,如下所示:

from collections import defaultdict
nested_dict = lambda: defaultdict(nested_dict)
logger = nested_dict()

然后我可以在任何脚本中使用它来创建嵌套条目,如下所示:

from utils.logger import logger
logger["some"]["key"] = 1

但是我也希望能够调用append方法,然后自动创建键并添加第一个条目

from utils.logger import logger
logger["some"]["key"].append(1)

这不起作用,显然会引发以下错误:

  

AttributeError:'collections.defaultdict'对象没有属性'append'

我不太确定如何以不破坏简单API /用法的方式扩展记录器以处理此功能。有什么想法吗?

换句话说,我希望我的记录器推断出它需要创建一个列表作为该键的值。

1 个答案:

答案 0 :(得分:-1)

您可以使用lambda函数设置默认值,这样,如果键不存在,它将创建key: default value而不是抛出KeyError
您可以将其设置为intfloat,具体的整数或字符串,甚至是list()more

logger = defaultdict(lambda: defaultdict(lambda: list()))