python字典dict,在使用過程中,插入元素或者更新某個值時,在不知道key是否存在的情況下,一般都會有一個if的判斷 。偶然發現 collections 模塊中有 defaultdict 這個類,使用很方便。defaultdict 是dict的subclass。
直接看官網上介紹的示例:
s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
d = defaultdict(list)
for k, v in s:
d[k].append(v)
統計詞頻:
s = 'mississippi'
d = defaultdict(int)
d = defaultdict(lambda:0)
for k in s:
d[k] += 1
其實我就是在看這個代碼(How to Write a Spelling Corrector,21行代碼實現)時發現這個defaultdict的。
另外,dict利用setdefault函數可以類似的實現這個功能,但是沒有defaultdict簡單和快捷。
s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
d = {}
for k, v in s:
d.setdefault(k, []).append(v)