1. 程式人生 > >defaultdict與{}建立字典時的區別

defaultdict與{}建立字典時的區別

最近在做spark教程中的lab3時,發現教程中有個語句使用了defaultdict(lambda: None)建立字典,那麼defaultdict()與{}有什麼區別呢

defaultdict

眾所周知,在字典中訪問不存在的鍵時,將會報錯

sample_one = [(0, 'mouse'), (1, 'black')]
a = {}                      
a.update(sample_one)
a[i] for i in range(3)

KeyError: 2

這是由於sample中沒有鍵2,這時使用defaultdict()就可以避免報錯

sample_one = [(0
, 'mouse'), (1, 'black')] a = defaultdict(lambda : None) a.update(sample_one) a[i] for i in range(3) Out[34]: ['mouse', 'black', None]

由此可以看出,對於沒有預先賦值的鍵,defaultdict(lambda: None)預設初始化為None