2017-01-01 70 views
0

我想在Python中的defaultdict。的代碼如下:python defaultdict lambda

dd = defaultdict(lambda :[0,0]) 
dd[5][4] = 2 
print(dd) 

但它引發IndexError

IndexError: list assignment index out of range 

和一旦我更改代碼以

dd[2][1] = 2 

結果是:

defaultdict(<function <lambda> at 0x000001F9F10EE730>, {2: [0, 2]}) 

我不知道爲什麼索引退出運行ge,範圍如何。

謝謝!

回答

3

defaultdict生成具有2

當你做一個dd[5][4] = 2長度,因爲關鍵5不存在的默認項,defaultdict生成[0,0]值如預期。

那麼你所訪問的第五屆指數,這是超出範圍(如你會做[0,0][4] = 2

(當然它的工作原理與dd[2][1] = 2因爲1是默認的列表範圍內)

如果你不知道你的列表的大小,你不想知道,我建議使用默認字典上整數的默認詞典,像這樣的:不

dd = defaultdict(lambda : defaultdict(int)) 

(當然生成一個rray但是一個字典的字典,但dd[5][4]構建立即工作)