Python defaultdict:打开/关闭默认创建?
Python defaultdict: switching default creation on / off?
有没有办法将 defaultdict 从宽松模式切换到严格模式,然后再切换回来?
第一次评论后更新:没有"trivially"转换为标准字典,因为这可能会导致具有数亿条目的字典出现内存问题。
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
改用普通词典就行了。更简单且有效,因为您只需要在严格限制的上下文中使用 "default" 功能。在那个有限的上下文中,使用 dict.setdefault
:
d = {}
for i in range(1, 10):
d.setdefault(i, []).append(i+1)
有没有办法将 defaultdict 从宽松模式切换到严格模式,然后再切换回来?
第一次评论后更新:没有"trivially"转换为标准字典,因为这可能会导致具有数亿条目的字典出现内存问题。
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
改用普通词典就行了。更简单且有效,因为您只需要在严格限制的上下文中使用 "default" 功能。在那个有限的上下文中,使用 dict.setdefault
:
d = {}
for i in range(1, 10):
d.setdefault(i, []).append(i+1)