Skip to content

建立 2026-09-14 更新 2026-09-14

檢視與走訪

NetworkX 提供四個持續更新的視圖(view)G.nodesG.edgesG.adjG.degree。它們像集合也像字典,改圖之後不必重新查詢,視圖會跟著變。

四個基本視圖

import networkx as nx

G = nx.Graph([(1, 2), (1, 3), (3, "m")])
G.add_node("spam")

list(G.nodes)
list(G.edges)
list(G.adj[1])   # 等同 list(G.neighbors(1))
G.degree[1]      # 連到 1 的邊數

只要一個節點或一組節點的邊/度:

G.edges([2, "m"])
G.degree([2, 3])

屬性寫入 vs 讀出

屬性寫入用下標最順手;一次列出資料用可呼叫形式:

G.nodes["spam"]["color"] = "blue"
G.edges[1, 2]["weight"] = 10

list(G.edges(data=True))
list(G.nodes(data="color"))

有向圖的後繼與前驅

DG = nx.DiGraph()
DG.add_edges_from([(2, 1), (1, 3), (2, 4), (1, 2)])

list(DG.successors(2))    # 2 指出去的節點
list(DG.predecessors(1))  # 指進 1 的節點
DG.out_degree[2]
DG.in_degree[1]

list(DG.edges) 的順序取決於加入邊的順序與鄰接結構,不要假設它按數字排序。

走訪整張圖

for n, nbrs in G.adj.items():
    for nbr, edict in nbrs.items():
        weight = edict.get("weight", 1)

無向圖每條邊會從兩端各走一次。若要每條邊只處理一次,改走 G.edges(data=True)