不确定这些“大小”属性来自何处,它们不会出现在“pc”列表中,但是假设它们取自每个列表中的第4项,并且它们在输出树中都应该是1000,那么这应该可以工作def make_tree(pc_list):
results = {}
for record in pc_list:
parent_id = record[0]
id = record[1]
if id in results:
node = results[id]
else:
node = results[id] = {}
node['name'] = record[2]
node['size'] = record[3]
if parent_id != id:
if parent_id in results:
parent = results[parent_id]
else:
parent = results[parent_id] = {}
if 'children' in parent:
parent['children'].append(node)
else:
parent['children'] = [node]
# assuming we wanted node id #0 as the top of the tree
return results[0]
打印我得到的make_tree(pc)的输出很漂亮
^{pr2}$
虽然按键显示的顺序不同,但几乎与示例输出类似(除了大小值)