簡體   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