預設字典的功能與dict基本相同,但在訪問乙個不存在的key
時,預設字典會提供乙個預設值,而不是引發異常。
預設字典的建構函式接受乙個工廠函式default_factory
作為引數,可以將乙個型別名看做是乙個工廠函式,比如list
,tuple
,str
等。
這個函式會在要生成預設值的時候無參呼叫,如果使用型別名作為工廠函式,則這個型別必須要有無參建構函式,比如:
dd = collections.defaultdict(
int)
#使用int作為工廠函式
print
(dd[
'a']
)#訪問不存在的key:'a'
dd = collections.defaultdict(
tuple
)#使用tuple作為工廠函式
print
(dd[
'a']
)#訪問不存在的key:'a'
dd = collections.defaultdict(
str)
#使用str作為工廠函式
print
(dd[
'a']
)#訪問不存在的key:'a'
class
test
:def
__init__
(self,name)
:#只有乙個建構函式,而且它有乙個引數
print
("init"
)dd = collections.defaultdict(test)
#使用自定義型別test作為工廠函式
print
(dd[
'a']
)#執行到這裡就會出現異常,原因是test類沒有無參的建構函式
直到最後一行語句之前,上面的結果是:
0
()
第三行是字串的預設值:空字串。
如果不提供工廠函式,那麼預設值的功能就失效了,此時預設字典與普通dict表現的功能一致:
dd = collections.defaultdict(
)print
(dd[
'a']
)#雖然dd是乙個預設字典,但由於沒有指定工廠函式,沒辦法產生乙個預設值,因此還是會發生異常
python 設定預設字典
訪問字典中某個 鍵 時,若鍵不存在則會報錯,比如 dic dic b traceback most recent call last file line 1,in dic b keyerror b 如果不想報錯,可以給字典設定預設值。即當鍵存在時,返回鍵對應的值 鍵不存在時,返回預設值 1 字典自帶...
預設字典,有序字典
第乙個引數是default factory,預設是none,它提供乙個初始化函式.當key不存在的時候,會呼叫這個工廠函式來生成key對應的value d for i in abcdef for j in range 3 if i not in d d i print d from collecti...
python 預設引數 Python預設引數有坑?
最近有小夥伴在面試中遇到了 關於函式預設引數的坑 的題目,少數夥伴對此問題理得不是太清楚,今天匯智妹請到匯智動力高階教師鄧老師為大家詳細講解一下,幫助不太清楚的小夥伴清晰的梳理一遍。鄧老師本次主要從以下三點來講解 什麼是預設引數?函式預設引數的坑是什麼?函式預設引數為什麼會有坑?一 什麼是預設引數 ...