[英]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.