Python`defaultdict`:设置时使用默认值,但在获取时不使用

时间:2012-02-10 07:33:51

标签: python defaultdict

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

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

...但是当我尝试访问它时却没有?

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

2 个答案:

答案 0 :(得分:8)

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

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

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

答案 1 :(得分:3)

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