2014-08-27 101 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不無,被不帶參數提供給定鍵的默認值,這個值被插入密鑰字典,並返回。