1

有什么方法可以collections.defaultdict在我设置它时返回一个默认构造的对象......

foo = defaultdict(list)
foo[3].append('dsafdasf')

...但不是当我尝试访问它时?

try:
   for word in foo[None]:
       print(word)
except KeyError:
    pass
4

2 回答 2

9

我认为你正在寻找的是这样的:

>>> foo = {}
>>> foo.setdefault(3, []).append('dsafdasf') # Appends to default value
>>> foo[None] # Raises a KeyError exception

也就是说,当您需要为缺少键引发异常时collections.defaultdict,您可以使用常规字典和 use方法而不是 using 来分配默认值和项目访问权限。setdefault

于 2012-02-10T07:47:46.523 回答
3

不,因为您的“设置”示例实际上是获取未使用插槽的示例。

于 2012-02-10T07:40:29.590 回答