我试图将当前视图的dict转换为我可以在AngularJS对象中使用它的格式:
data = "{'root': {'host': {'hostname1': {'10.0.0.1': {}}, 'hostname2': {'10.0.0.2': {}}}, 'monitor': {'bandwidth': {'hostname1': {'10.0.0.1': {'hostname1': {'10.0.0.1': {'10': {}}}, 'hostname2': {'10.0.0.2': {'10': {}}}}}, 'hostname2': {'10.0.0.2': {'hostname1': {'10.0.0.1': {'10': {}}}, 'hostname2': {'10.0.0.2': {'10': {}}}}}}}}}"
使用名称和子值进行格式化,例如:
[{
name: "Node 1",
children: [{
name: "Node 1.1",
children:[{name:"Node 1.1.1"},{name: "Node 1.1.2"}]
}]},{
name: "Node 2",
children: [{name: "Node 2.1"},{name: "Node 2.2"}]
}]
我尝试了几种不同的方法,但总是收到部分结果。例如,我尝试使用递归,它直到深度值,然后忽略所有其他树。
def modifydict2(data):
for key, value in data.items():
return [{'name': key, 'children':modifydict2(value)}]
结果我只收到了部分词典。我明白我的循环从未起作用,因为我在下一次迭代之前返回了值,但不知道如何解决这个问题:
[{'name': 'root', 'children': [{'name': 'host', 'children': [{'name': 'ctest1.prod01.weave.local', 'children': [{'name': '10.32.62.1', 'children': None}]}]}]}]
答案 0 :(得分:1)
您需要将当前返回的各个值附加到列表中,然后返回该列表。或者,使用列表理解:
def modify_dict(d):
return [{'name': key, 'children': modify_dict(value)}
for key, value in d.items()]