私はdictサブクラスを持っています。その仕事はネストされたdictキーが存在しない場合は動的に追加し、appendが呼び出された場合はlistappendを実行することです。
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': {}}}
私は何が欠けていますか?