Python-dict的子類

不建議list和dict的數據結構

因爲這兩個數據結構基於c語言

class myDcit(dict):
    def __setitem__(self, key, value):
        super().__setitem__(key, value * 2)


myDcit = myDcit(x=1)
print(myDcit)

我們看到這個Mydict並沒有調用__setitem__這個魔法函數

myDcit['x'] = 1
print(myDcit)
卻成功了

通常建議繼承自collections 中的Userdict

from collections import UserDict
class myDcit(UserDict):
    def __setitem__(self, key, value):
        super().__setitem__(key, value * 2)


myDcit = myDcit(x=1)
print(myDcit)
myDcit['x'] = 1
print(myDcit)

defaultdict

實現了missing魔法函數避免了無鍵值對時出現KeyError情況

from collections import defaultdict

myDict = defaultdict(dict)
value = myDict['aaa']
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章