class warehouse:
def __init__(self):
self.A={}
self.B={}
self.racks={'A':self.initialize(self.A),'B':self.initialize(self.B)}
def initialize(self,rack):
shelf = dict([ (items,0) for items in range(1,6) ])
for x in range(3):
rack[x+1]=shelf
return rack
def store(self,_id,owner_id,colour,weigth):
import pdb;pdb.set_trace()
empty_position=self.empty_positions(self.store.__name__)[0]
self.racks[empty_position[0]][empty_position[1]][empty_position[2]]= {'id':_id,'owner':owner_id,'colour':colour,'weigth':weigth}
print self.racks
def empty_positions(self,name):
store_list=[]
for rack,shelfs in self.racks.iteritems():
for shelf_number,shelf_objects in shelfs.iteritems():
store_list.append([rack,shelf_number])
for position,value in shelf_objects.iteritems():
if 0==value:
store_list.append([rack,shelf_number,position])
return store_list
obj=warehouse()
val=obj.store(2,34,4,44)
クラスのinitメソッドを呼び出して辞書を作成したいのは、クラス ウェアハウスです。今度は、クラス ウェアハウスの同じインスタンスを使用して、ネストされた辞書にいくつかの値を格納したいと思います。obj.store( を呼び出すと2,34,4,44).辞書を更新し、結果を教えてくれます。
{'A': {1: {1: {'colour': 4, 'id': 2, 'owner': 34, 'weigth': 44},
2: 0,
3: 0,
4: 0,
5: 0},
2: {1: {'colour': 4, 'id': 2, 'owner': 34, 'weigth': 44},
2: 0,
3: 0,
4: 0,
5: 0},
3: {1: {'colour': 4, 'id': 2, 'owner': 34, 'weigth': 44},
2: 0,
3: 0,
4: 0,
5: 0}},
'B': {1: {1: 0, 2: 0, 3: 0, 4: 0, 5: 0},
2: {1: 0, 2: 0, 3: 0, 4: 0, 5: 0},
3: {1: 0, 2: 0, 3: 0, 4: 0, 5: 0}
}
}
しかし、私は期待していました:
{'A': {1: {1: {'colour': 4, 'id': 2, 'owner': 34, 'weigth': 44},
2: 0,
3: 0,
4: 0,
5: 0},
2: {1: 0, 2: 0, 3: 0, 4: 0, 5: 0},
3: {1: 0, 2: 0, 3: 0, 4: 0, 5: 0}},
'B': {1: {1: 0, 2: 0, 3: 0, 4: 0, 5: 0},
2: {1: 0, 2: 0, 3: 0, 4: 0, 5: 0},
3: {1: 0, 2: 0, 3: 0, 4: 0, 5: 0}
}
}
キー「A」の他のすべてのネストされた辞書に値を設定し、1 PDB を配置してデバッグしようとしましたが、同じ結果を示しています。しかし、ターミナルでこの操作を行うと、期待していた結果が得られます。
Python 2.6.6 (r266:84292, Sep 15 2010, 15:52:39)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> d={'A': {1: {1: 0, 2: 0, 3: 0, 4: 0, 5: 0}, 2: {1: 0, 2: 0, 3: 0, 4: 0, 5: 0}, 3: {1: 0, 2: 0, 3: 0, 4: 0, 5: 0}}, 'B': {1: {1: 0, 2: 0, 3: 0, 4: 0, 5: 0}, 2: {1: 0, 2: 0, 3: 0, 4: 0, 5: 0}, 3: {1: 0, 2: 0, 3: 0, 4: 0, 5: 0}}}
>>> d['A'][1][1]={"some_key":"some_value",}
>>> d
{'A': {1: {1: {'some_key': 'some_value'}, 2: 0, 3: 0, 4: 0, 5: 0}, 2: {1: 0, 2: 0, 3: 0, 4: 0, 5: 0}, 3: {1: 0, 2: 0, 3: 0, 4: 0, 5: 0}}, 'B': {1: {1: 0, 2: 0, 3: 0, 4: 0, 5: 0}, 2: {1: 0, 2: 0, 3: 0, 4: 0, 5: 0}, 3: {1: 0, 2: 0, 3: 0, 4: 0, 5: 0}}}
何かが足りないのか、追いつけない何か問題があるのか わかりません.私はpython 2.6.6を使用していますが、これは2.7.1でもあります。