【发布时间】:2022-01-19 18:40:21
【问题描述】:
我有一本这样的字典:
{
"dashboard": {
"dashboard": {
"data": {
"data": {
"content": {}
}
},
}
},
"docs": {
"docs": {
"content": {},
"analytics": {}
}
}
}
我想用这本字典来画一个networkx树形图。由于有多个根,我可以绘制多个图而不是一个图吗?例如,“仪表板”和“文档”的两个单独图表。我面临的另一个问题是我无法将字典直接用于networkx。直到现在我发现 readwrite.json_graph.tree_graph() 可以读取这样的字典对象并生成图形。但问题是我需要更改格式。我怎样才能使以前的字典如下所示:
{
{
"id": "dashboard",
"children":[{
"id": "dashboard",
"children":[{
"id": "data",
"children":[{
"id": "data",
"children":[{
"id": "content"
}]
}]
}]
}]
}
{
"id": "docs",
"children":[{
"id": "docs",
"children":[{
"id": "content",
"id": "analytics"
}]
}]
}
}
我试过这段代码来改变格式:
def translate(d, p, r):
for k, v in d.items():
# if k not in p:
r = {
'id': k,
'children' if isinstance(v, dict) else None: translate(v, p, r)
}
return r
result = translate(all_items, has_parent, r={})
return result
【问题讨论】:
-
图表与您的代码有何关系?我没有得到您试图从嵌套字典中捕获的关系结构(networkx 适用于字典字典,而不是几层字典),并且该图不代表您的字典(“仪表板”缺失和“混合”不存在)。
-
该图只是一个示例。该图显示了调用的路径。
标签: python python-3.x dictionary networkx