簡體   English   中英

附加到不存在的嵌套 defaultdict 條目

[英]Appending to a non existing nested defaultdict entry

我正在創建一個像這樣的小型記錄器包:

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/用法的情況下以這種方式擴展我的記錄器來處理此功能。 有任何想法嗎?

換句話說,我希望我的記錄器推斷它需要創建一個列表作為該鍵的值。

您可以使用 lambda 函數來設置默認值,這樣如果鍵不存在,它將創建key: default value而不是拋出KeyError
您可以將其設置為intfloat 、具體整數或字符串,甚至list() 等等

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM