我有一个树形结构,如: 公司 - >部门 - >角色 - >
我有一个三重循环结构,如下所示:
for company in self.Companies():
cName = company.Name()
for dept in company.Departments():
dName = department.Name()
for role in dept.Roles():
rName = role.Name()
roleID = role.ID()
.Name()函数返回一个dept名称,如Android-Sales。公司可以零或多个部门。
到目前为止,以上就是我的全部。我正在尝试开发这个,所以我可以得到一个列表列表: 理想情况下,这就是我想要的。如果重复某些事情,列表中的下一个项目应该留空。或者它可能没有字段,在这种情况下也将它留空。
[
['Google','Android-Sales','营销商','A123'],
['','Google-Play','开发','A435'],
[ '', '', '测试', 'A125'],
[ '', '', '', 'A126'],
['我的小公司','','超级角色','A123'] ]
或者这也会起作用......
[
['Google','Android-Sales','营销商','A123'],
['Google','Google-Play','开发','A435'],
[ '谷歌', '谷歌播放', '测试', 'A125'],
[ '谷歌', '谷歌播放', '测试', 'A126'],
['我的小公司','','超级角色','A123'](这里“我的小公司”没有>部门。 ]
每个内部列表的长度应为4。
答案 0 :(得分:2)
尝试这样的事情:
tree = {"Google":{"Android":"yes", "Nexus":"no"}}
list_of_lists = []
def listbuilder(sub_tree, current_list):
for key in sub_tree:
if isinstance(sub_tree[key], dict):
listbuilder(sub_tree[key], current_list + [key])
else:
list_of_lists.append(current_list + [key] + [sub_tree[key]])
listbuilder(tree,[])
print str(list_of_lists)
输出:
[['Google', 'Nexus', 'no'], ['Google', 'Android', 'yes']]