【发布时间】:2012-08-23 10:32:49
【问题描述】:
我被以下数据困住了。
有一个清单。
[{name: '/', children: [{name: 'bin'}, {name: 'sbin'}, {name: 'home'}]},
{name: 'home', children: [{name: 'user1'}, {name: 'user2'}]},
{name: 'user2', children: [{name: 'desktop'}]}]
我想把上面的列表转换成下面的字典。
{name: '/', children: [{name: '/bin'}, {name: '/sbin'}, {name: '/home', children: [{name: 'user1'}, {name: 'user2', children: [{name: 'desktop'}]}]}]}
我写了一些代码来转换上述样式的数据。
def recT(data, child, parent, collector):
dparent = dict(name=parent)
dchildren = dict()
lst = []
for c in child:
lst.append(dict(name=c['name']))
for d in data:
if c['name'] == d['name']:
if len(d) > 1:
dchildren.update(dict(children=recT(data, d['children'], d['name'], collector)))
dparent.update(dchildren)
collector.update(dparent)
return lst
那么,
myd = dict()
for d in data2:
if len(d) > 1:
recT(data2, d['children'], d['name'], myd)
注意:data2 是我要转换的字典列表。
但是,输出字典是列表中的最后一条记录:
{'children': [{'name': 'desktop'}], 'name': 'user2'}
请帮忙。
【问题讨论】:
-
向我们展示您的代码,以便我们提供帮助 ...
-
我希望你意识到列表数据结构不能处理树中任何地方的两个同名目录(例如 /bin 和 /usr/bin)。
标签: python list dictionary tree