2012-06-06 63 views
35

我使用Python 3.2.3,並希望更改默認的默認字符串值返回字符串值:設置Python的collections.defaultdict

from collections import defaultdict 
d=defaultdict(str) 
d["NonExistent"] 

返回的值是''。我怎樣才能改變這個,以便當沒有找到密鑰時,返回"unknown"而不是空字符串?

回答

56

defaultdict的參數是一個返回默認值的函數(更確切地說是一個可調用的對象)。所以你可以傳入一個返回你想要的默認值的lambda。

>>> from collections import defaultdict 
>>> d = defaultdict(lambda: 'My default') 
>>> d['junk'] 
'My default' 

編輯解釋拉姆達:

拉姆達僅僅是定義一個函數,而不給它起名字的簡寫。你可以做同樣的使用顯式高清:

>>> def myDefault(): 
...  return 'My default' 
>>>> d = defaultdict(myDefault) 
>>> d['junk'] 
'My default' 

更多信息,請參見the documentation