Python預設字典 defaultdict

2021-09-10 09:03:29 字數 1305 閱讀 3899

預設字典的功能與dict基本相同,但在訪問乙個不存在的key時,預設字典會提供乙個預設值,而不是引發異常。

預設字典的建構函式接受乙個工廠函式default_factory作為引數,可以將乙個型別名看做是乙個工廠函式,比如listtuplestr等。

這個函式會在要生成預設值的時候無參呼叫,如果使用型別名作為工廠函式,則這個型別必須要有無參建構函式,比如:

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預設引數有坑?

最近有小夥伴在面試中遇到了 關於函式預設引數的坑 的題目,少數夥伴對此問題理得不是太清楚,今天匯智妹請到匯智動力高階教師鄧老師為大家詳細講解一下,幫助不太清楚的小夥伴清晰的梳理一遍。鄧老師本次主要從以下三點來講解 什麼是預設引數?函式預設引數的坑是什麼?函式預設引數為什麼會有坑?一 什麼是預設引數 ...