1. 程式人生 > >python的defaultdict用法

python的defaultdict用法

在學習python資料分析的時候,碰到defaultdict的使用,下面說明一下:

先看例子:如果我要將一個包含單詞的列表按照單詞的首字母分類,並組成一個字典。

words = ['apple', 'pear', 'peach', 'banana', 'plum']
by_letter = {}
for word in words:
    letter = word[0]
    if letter not in by_letter:
        by_letter[letter] = [word]
    else:
        by_letter[letter].append(word)

輸出:

另一種方法是使用dict的內建方法:setdefault(key,預設值)。該方法是嘗試設定key值,如果key存在,則返回key對應的值,如果key不存在,則新增該key,並將預設值作為它的值。

words = ['apple', 'pear', 'peach', 'banana', 'plum']
by_letter = {}
for word in words:
    letter = word[0]
    by_letter.setdefault(letter, []).append(word)

輸出結果同上。

最後一種方法是使用defaultdict,它接受一個工廠方法來構造:

d = defaultdict(factory_function)

這裡的factory_function可以是list,set,str等其他,當字典中的key不存在時,返回的是factory_function的預設值,比如list返回[],str返回空字串'',int返回0。

下面使用defaultdict實現上述的要求:

from collections import defaultdict
words = ['apple', 'pear', 'peach', 'banana', 'plum']
by_letter = defaultdict(list)#使用list方法作為工廠方法,key不存在返回[]
for word in words:
    by_letter[word[0]].append(word)

輸出同上。但是for迴圈中一行程式碼就實現了功能,很簡潔。