python - 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
解决方案
只需使用常规字典即可。更简单且有效,因为您只需要在严格限制的上下文中使用“默认”功能。在这种有限的情况下,使用dict.setdefault
:
d = {}
for i in range(1, 10):
d.setdefault(i, []).append(i+1)