2014-08-27 105 views
-6

有普通字典:Python的添加元素与dict和defaultdict

ordinarydict = {} 
ordinarydict['somekey'] 
print ordinarydict 

我会得到一个错误。 KeyError "somekey" 而这是预期的行为。

因此,有defaultdict:

from collections import defaultdict 
d = defaultdict(int) 
d['somekey'] 
print d 

>>> defaultdict(<type 'int'>, {'somekey': 0}) 

我没有字典添加任何东西,我只是叫字典无效键。但是现在新元素被添加到defaultdict。

+9

...因为这正是'defaultdict'是? https://docs.python.org/2/library/collections.html#collections.defaultdict – jonrsharpe 2014-08-27 12:08:00

+1

PS:“有人可以解释下一件事情:”这个网站不会读取其他的消息,我们不知道是什么“最后的事情”是。每个问题都独立于所有其他问题。 – 2014-08-27 12:11:06

+2

您是否尝试过查看[defaultdict'的文档](https://docs.python.org/2/library/collections.html#collections.defaultdict)?或者在交互式解释器中输入'help(defaultdict)'?总的来说,人们所唾弃的文档将比你要求某人现在写出来的内容更具可读性。如果您阅读了文档并且无法理解某些内容,那么您有一个具体问题需要提出(也可能需要提交文档错误报告)。 – abarnert 2014-08-27 12:13:17

回答

1

这是defaultdict的全部要点:你构造一个可调用的函数(在本例中为int),当一个不存在的密钥被访问时,它会调用它(生成0),并插入它进入字典。它会在您访问它们时自动创建密钥。

0

因为defaultdict默认将缺少的关键字添加到字典中,如可在source中看到的那样。

这种行为被记录在docs

如果default_factory不无,被不带参数提供给定键的默认值,这个值被插入密钥字典,并返回。