14-python基礎—python3中的defaultdict()


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)返回的是工廠函數的實例,那么就具有了該工廠函數的相應方法。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM