2010-03-24 88 views

回答

14

defaultdict的構造函數需要調用。 defaultdict(int)是一個默認字典對象,不是可調用的。使用lambda它可以工作,但是:

c = collections.defaultdict(lambda: collections.defaultdict(int)) 

這工作,因爲我傳遞給外部defaultdict被調用時,創建一個新的defaultdict可調用。

下面是一個例子:

>>> import collections 
>>> c = collections.defaultdict(lambda: collections.defaultdict(int)) 
>>> c[5][6] += 1 
>>> c[5][6] 
1 
>>> c[0][0] 
0 
>>> 
+0

真是太快了,謝謝。 – Clutch 2010-03-24 18:03:39

5

禮Bendersky提供了這個問題,一個偉大的正面回答。將數據重構爲

>>> import collections 
>>> c = collections.defaultdict(int) 
>>> c[1, 2] = 'foo' 
>>> c[5, 6] = 'bar' 
>>> c 
defaultdict(<type 'int'>, {(1, 2): 'foo', (5, 6): 'bar'}) 

也可能更好,這取決於您實際需要的內容。

+1

這是一個質量觀察。 – 2011-09-17 12:08:25