将except AttributeError与defaultdict一起使用以初始化Lis

2024-09-28 15:38:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要遍历一些数据并创建一个嵌套的字典4键,其中前3个键的值为dict类型,最后一个键的值为list类型,将存储整数。我想避免KeyErrors,所以我使用defaultdict()。我创建了一个调用defaultdict()的递归函数和一个try/except来查找AttributeError,以发现是否已经在defaultdict中创建了一个列表。使用try/except查找AttributeError安全吗?或者我应该考虑的其他错误是否会出现

def dict_factory():
    return defaultdict(dict_factory)
nestedDict = dict_factory()
try:
    nestedDict[k1][k2][k3][k4].append(someInt)
except AttributeError:
    nestedDict[k1][k2][k3][k4] = [someInt] 

我发现下面的方法同样有效。我用这个代码会更好吗

nestedDict = defaultdict(lambda: defaultdict(lambda: defaultdict(lambda: defaultdict(list))))

Tags: lambda类型factoryk2k1dictlistattributeerror