不建議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']