我试图从 json 响应结果生成类似倒排索引的结构。
[{“节点”:[{“节点”:[{“节点”:[{“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数据。
树 = 树(数据)
它打印出这个:
是 [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:其实我不相信问这种个人问题,但我整天都在与这个作斗争。我也问过我的朋友,经过一段时间的争吵,他也说我觉得一切都很好。
所以我正在等待答案和从中吸取教训:)
提前致谢。