1.collections.defaultdict 類
from collections import defaultdict
2.collections.defaultdict 類與工廠函數dict比較:
(1) 衆所周知,在Python中如果訪問dict字典中不存在的鍵,會引發KeyError異常。但是有時候,字典中的每個鍵都存在默認值是非常方便的。defaultdict可以避免KeyError異常。
1 # 1-dict() 2 strings = ('puppy', 'kitten', 'puppy', 'puppy', 3 'weasel', 'puppy', 'kitten', 'puppy') 4 counts = {} 5 for kw in strings: 6 counts[kw] += 1 7 8 # 報錯 9 #Traceback (most recent call last): 10 # File "C:\Users\summer\Desktop\demo.py", line 5, in <module> 11 # counts[kw] += 1 12 #KeyError: 'puppy' 13 14 # 2-defaultdict() 15 from collections import defaultdict 16 17 strings = ('puppy', 'kitten', 'puppy', 'puppy', 18 'weasel', 'puppy', 'kitten', 'puppy') 19 counts = defaultdict(int) 20 for kw in strings: 21 counts[kw] += 1 22 23 print(counts) 24 25 # defaultdict(<class 'int'>, {'puppy': 5, 'kitten': 2, 'weasel': 1})
(2)default_factory 接收一個工廠函數作爲參數, 例如int str list set等.
defaultdict類的初始化函數接受一個類型作爲參數,當所訪問的鍵不存在的時候,可以實例化一個值作爲默認值默認值的類型由工廠函數決定。
from collections import defaultdict dic1 = defaultdict(int) print(dic1['a']) dic2 = defaultdict(list) print(dic2['a']) dic3 = defaultdict(dict) print(dic3['a']) # 0 # [] # {}
(3)返回的是工廠函數的實例,那麼就具有了該工廠函數的相應方法。
還可以參考 Python 3 collections.defaultdict() 與 dict的使用和區別https://blog.csdn.net/kyi_zhu123/article/details/80203118