如何使用 Python 中的库 networkx 将 JSON 文件转换为图形?

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)。接下来,根据功能要求确保 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))