依然是collections模組,提供了比基礎資料型別更為豐富,適合特定場景下的資料結構。當需要將某個鍵對映到乙個集合型別(list,tuple)時,有時候需要初始化集合型別。故我們經常會碰到以下的**場景。
d = {}
for key, value in pairs:
if key not in d:
d[key] =
而使用defaultdict時,我們可以在初始化時預設資料型別和預設值。
d = defaultdict(list)
for key, value in pairs:
defaultdict支援幾乎所有的dict熟悉和方法操作。額外,在初始化時,提供工廠屬性default_factory。預設為none,如果default_factory不是none,則不帶引數呼叫它以提供給定鍵的預設值,此值將插入鍵的字典中並返回。
defaultdict提供了乙個__miss__方法,該方法只會被__getitem__()呼叫,即在進行d[key]獲取key對應的值時。_missing_()方法使用default_factory屬性; 它從建構函式的第乙個引數(如果存在)初始化,如果不存在則初始化為none。
from collections import defaultdict
d = defaultdict(list)
>>> d
defaultdict(, )
嘗試編寫defaultdict的內部實現,如下:
class defaultdict(dict):
def __init__(self, default_factory):
self.default_factory = default_factory
def __missing__(self, key):
if self.default_factory is none:
raise keyerror(key)
return self.default_factory()
def __getitem__(self, key):
if key not in self:
super().__setitem__(key, self.__missing__(key))
return super().__getitem__(key)
python中defaultdict的用法詳解
當我使用普通的字典時,用法一般是dict 新增元素的只需要dict element value即,呼叫的時候也是如此,dict element 但前提是element字典裡,如果不在字典裡就會報錯,如 這時defaultdict就能排上用場了,defaultdict的作用是在於,當字典裡的key不存...
python中defaultdict的用法
當使用普通的字典時,用法一般是dict 新增元素的只需要dict element value即,呼叫的時候也是如此,dict element 但前提是element字典裡,如果不在字典裡就會報錯。這時defaultdict就能排上用場了,defaultdict的作用是在於,當字典裡的key不存在但被...
Python中的defaultdict函式
用於產生乙個帶有預設值的dict。主要針對key不存在的情況下,也希望有返回值的情況。a dict a k1 1 a a k2 traceback most recent call last file line 1,in keyerror k2 對於普通的dict,key不存在就報錯。但是對於def...