首页 > 解决方案 > Python defaultdict:打开/关闭默认创建?

问题描述

有没有办法将 defaultdict 从 permissive 切换到 strict 模式并再次返回?

第一次评论后更新:没有“琐碎”地转换为标准字典,因为这可能会导致具有数亿条目的字典出现内存问题。

from collections import defaultdict

# population time, be permissive
d = defaultdict(lambda: [])
for i in range(1,10):
    d[i].append(i + 1)

# d.magic()     # magic switch, tell d to be strict
print(d[1])     # OK, exists
print(d[111])   # I'd like to have an error here, please

标签: pythondefaultdict

解决方案


只需使用常规字典即可。更简单且有效,因为您只需要在严格限制的上下文中使用“默认”功能。在这种有限的情况下,使用dict.setdefault

d = {}
for i in range(1, 10):
    d.setdefault(i, []).append(i+1)

推荐阅读