[英]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
。
您可以將其設置為int
、 float
、具體整數或字符串,甚至list()
等等。
logger = defaultdict(lambda: defaultdict(lambda: list()))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.