我的字典子類,他們的工作是動態添加嵌套的字典鍵,如果不存在的話,做清單追加,如果追加被稱爲列表:Python的 - 附加到嵌套在字典子
class PowerDict(dict):
def __getitem__(self, item):
try:
return dict.__getitem__(self, item)
except KeyError:
value = self[item] = type(self)()
return value
def append(self,item):
if type(self) != list:
self = list()
self.append(item)
所以
a = PowerDict()
a['1']['2'] = 3
產生輸出:
a = {'1': {'2': 3}}
但是,有時我需要做這樣的事情:
b = PowerDict()
b['1']['2'].append(3)
b['1']['2'].append(4)
應該產生的輸出:
b = {'1': {'2': [3, 4]}}
但上面的代碼產生輸出:
{'1': {'2': {}}}
什麼,我缺少什麼?
你不能說'self = list()'...你需要設置鍵等於一個列表... self是一個字典 –
確實,'self = list()'只是重新綁定變量'self'。 –
您是否附加到多重索引格式?我發現一個由元組索引的dictonary更加優雅:'a [1,2] = 3'。 – katrielalex