json 応答結果から逆インデックスのような構造を生成しようとしていました。
[{"node":[{"node": [{"node": [{"id": "w"}], "id": "q"}], "id":"e"},{ "id":"r"},{"id":"t"}],"id":"y"}, {"id": "u"}]
これがサンプルのjsonデータです。私が試みているのは、各「id」オブジェクトのインデックスを追跡することだけです。たとえば、特定のサンプルでは、「id」が「u」に等しいオブジェクトのインデックスは [1] であり、「id」が「q」に等しいオブジェクトのインデックスは [0[0[0]]] です。
ここでの結果のインデックス表現は配列の形式であるため、それぞれ [1] と [0,0,0] になります。
私はすべてのためにこのコードを書きました。
class Tree:
def __init__(self, data):
self.data = data
self.indices = {}
self.create_index(self.data)
def create_index(self, data):
for i in range(len(data)):
self.trace_node(data[i], i, [])
print self.indices
def trace_node(self, node, index, index_list):
_list = index_list
_list.append(index)
self.indices[node['id']] = _list
print node['id'], _list
try:
for i in range(len(node['node'])):
self.trace_node(node['node'][i], i, _list)
except:
pass
このコードを実行すると、トレース中に各ノードの正しい結果が出力されますが、実行の最後に、インデックスクラス変数 ( dict object ) に奇妙な値が残り、それを理解できません。なぜですか?
これが実行結果です。これには、上記の jsonデータを使用しました。
ツリー = ツリー (データ)
そして、これを出力します:
y[0]
e [0, 0]
q [0, 0, 0]
w [0, 0, 0, 0]
r [0, 1]
t [0, 2]
あなた [1]
{'e': [0]、'q': [0]、'r': [0]、'u': [1]、't': [0]、'w': [0]、' y': [0]}
したがって、ここでは、「id」ごとに正しい結果のインデックス配列が出力されることがわかりますが、最後にクラス変数のインデックスが表示されているだけで、何がわかりません。
PS : 実際、私はこの種の個人的な問題を尋ねることを信じていませんが、私は一日中これと戦っています. 私は友人に同じことを尋ねました。
だから私はそれから学ぶための答えと教訓を待っています:)
前もって感謝します。