繁体   English   中英

如何将 JSON 文件转换为 Python 中带有 library.networkx 的图形?

[英]How to convert a JSON file to a graph with library networkx in Python?

我有一个很大的 JSON 文件,我想用 .networkx 库将它转换为图形。 JSON 文件包含很多节点,例如:

{“数据”:[{“d”:2,“来源”:“C”,“目标”:“L”},...]}

我已经打开了 JSON 文件,并提取了 JSON 文件中的每个“数据”字典。 但是,我不知道如何使用 .networkx 将我所有的源节点、目标节点考虑到属性“d”转换为图形。

import networkx as nx
import json

lst = list()
with open('json_file.json') as json_load:
    data = json.load(json_load)
    lst.extend( data["edges"])  
    d, src, tgt = [],[], [], [] 
    
    for elem in lst:
      d.append(elem["data"]["d"])
      src.append(elem["data"]["source"])
      tgt.append(elem["data"]["target"])

G = nx.Graph()      
G.add_edges_from([tuple(zip(src, tgt))])

当我写最后一行将边插入 G 图中时,它并没有真正起作用。 我有一个错误。 我猜是因为我没有正确地将源节点和目标节点合并在一起。

另外,我还有另一个问题。 我也不知道如何为图中的每个节点考虑属性“d”。

传递给G.add_edges_from的参数无效,特别是zip的结果 - ping 几个可迭代对象已经是一个可迭代的元组,因此只需要zip(src, tgt, d) 接下来,根据 function 的要求,确保d是字典列表。

这是一个可重现的例子:

import networkx as nx

src = ["A", "B", "C"]
tgt = ["B", "C", "D"]
d = [{"weight": 2}, {"weight": 3}, {"weight": 4}]

G = nx.Graph()
G.add_edges_from(zip(src, tgt, d))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM