認識defaultdict:
當我使用普通的字典時,用法一般是dict={},添加元素的只需要dict[element] =value即,調用的時候也是如此,dict[element] = xxx,但前提是element字典里,如果不在字典里就會報錯.
這時defaultdict就能排上用場了,defaultdict的作用是在於,當字典里的key不存在但被查找時,返回的不是keyError而是一個默認值,這個默認值是什么呢,下面會說
如何使用defaultdict
defaultdict接受一個工廠函數作為參數,如下來構造:
dict =defaultdict( factory_function)
這個factory_function可以是list、set、str等等,作用是當key不存在時,返回的是工廠函數的默認值,比如list對應[ ],str對應的是空字符串,set對應set( ),int對應0,如下舉例:
from collections import defaultdict
dict1 = defaultdict(int)
dict2 = defaultdict(set)
dict3 = defaultdict(str)
dict4 = defaultdict(list)
dict1[2] ='two'
print(dict1[1])
print(dict2[1])
print(dict3[1])
print(dict4[1])
輸出:
0
set()
[]
使用set初始化的defaultdict
In[6]: type_corners = {ltype:defaultdict(set) for ltype in useful_types}
{1: defaultdict(set, {}),
2: defaultdict(set, {}),
3: defaultdict(set, {}),
4: defaultdict(set, {})}
In[9]: type_corners[1] #以鍵1為例,改鍵對應的Value,就是一個特殊的dict。
Out[9]: defaultdict(set, {})
In[10]: type_corners[1]["hello"] #無該鍵時,返回set。
Out[10]: set()
In[11]: type_corners[1]["hello"]="pig" #設置dict鍵值對
In[12]: type_corners[1]["hello"]
Out[12]: 'pig'