0
我需要一個簡單的嵌套字典的包裝,我試圖像這樣的Python - 包裝嵌套字典
class DictWrapper(object):
def __init__(self, x_names, y_names):
self._dict = {}
for x in x_names:
self._dict[x] = {}
for y in y_names:
self._dict[x][y] = {}
def __setitem__(self, x, y, val):
self._dict[x][y] = val
def __getitem__(self, x, y):
return self._dict[x][y]
if __name__ == '__main__':
results_holder = DictWrapper(['x1', 'x2', 'x3'], ['y1', 'y2'])
results_holder['x1']['y2'] = 11
然而,這導致了以下錯誤:
results_holder['x1']['y2'] = 11
TypeError: __getitem__() takes exactly 3 arguments (2 given)
我是在正確的軌道上?我怎樣才能使這種簡單的字典包裝工作?
這裏'self._dict [X] [Y] = {}'你說'字典[X] [Y]'是一個字典。 '11'不是字典。 (雖然你應該可以將它設置爲任何值,這很奇怪) – njzk2
你需要預先指定密鑰嗎? 'defaultdict(dict)'會爲你工作嗎? – mgilson
阻止你使用非嵌套字典的東西是什麼? 'results_holder = {}; results_holder ['x1','y2'] = 11'正常工作。 – user2357112