当我设置它时,有什么方法可以让collections.defaultdict
返回默认的构造对象...
foo = defaultdict(list)
foo[3].append('dsafdasf')
...但是当我尝试访问它时却没有?
try:
for word in foo[None]:
print(word)
except KeyError:
pass
答案 0 :(得分:8)
我认为您正在寻找的是这样的:
>>> foo = {}
>>> foo.setdefault(3, []).append('dsafdasf') # Appends to default value
>>> foo[None] # Raises a KeyError exception
也就是说,当您需要为缺少的密钥引发异常时需要分配默认和项目访问权限时,可以使用常规字典并使用collections.defaultdict
方法,而不是使用setdefault
。
答案 1 :(得分:3)
不,因为您“设置它”的示例实际上是获取未使用的插槽的示例。