collections之defaultdict

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)





發佈了33 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章