擅长:python、mysql、java
<p>这是一个简单的数据循环,没有递归。在生成结果树时,使用一个辅助树(其中的值是字典键)作为结果树的索引。在</p>
<pre><code>def make_tree(diclist, keylist):
indexroot = {}
root = {}
for d in diclist:
walk = indexroot
parent = root
for k in keylist:
walk = walk.setdefault(d[k], {})
node = walk.setdefault('node', {})
if not node:
node[k] = d[k]
parent.setdefault(k+'s',[]).append(node)
walk = walk.setdefault('children', {})
parent = node
return root[keylist[0]+'s']
foos = make_tree(x, ["foo","bar","baz"])
</code></pre>