當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python NetworkX Graph.update用法及代碼示例


本文簡要介紹 networkx.Graph.update 的用法。

用法:

Graph.update(edges=None, nodes=None)

使用節點/邊/圖形作為輸入來更新圖形。

與 dict.update 一樣,此方法將圖作為輸入,將圖的節點和邊添加到該圖中。它也可以有兩個輸入:邊和節點。最後,它可以采用邊或節點。要僅指定節點,必須使用關鍵字 nodes

邊和節點的集合的處理方式與add_edges_from/add_nodes_from 方法類似。迭代時,它們應該產生 2 元組 (u, v) 或 3 元組 (u, v, datadict)。

參數

edges圖形對象、邊的集合或無

第一個參數可以是圖或一些邊。如果它具有屬性 nodes edges ,則將其視為 Graph-like 對象,並且這些屬性用作要添加到圖中的節點和邊的集合。如果第一個參數沒有這些屬性,則將其視為邊的集合並添加到圖中。如果第一個參數為 None,則不添加邊。

nodes節點集合,或無

第二個參數被視為要添加到圖中的節點集合,除非它是 None。如果 edges is Nonenodes is None 會引發異常。如果第一個參數是 Graph,則忽略 nodes

注意

如果您想使用鄰接結構更新圖形,則可以直接從鄰接中獲取邊/節點。以下示例提供了常見情況,您的鄰接可能略有不同,需要對這些示例進行調整:

>>> # dict-of-set/list/tuple
>>> adj = {1: {2, 3}, 2: {1, 3}, 3: {1, 2}}
>>> e = [(u, v) for u, nbrs in adj.items() for v in nbrs]
>>> G.update(edges=e, nodes=adj)
>>> DG = nx.DiGraph()
>>> # dict-of-dict-of-attribute
>>> adj = {1: {2: 1.3, 3: 0.7}, 2: {1: 1.4}, 3: {1: 0.7}}
>>> e = [
...     (u, v, {"weight": d})
...     for u, nbrs in adj.items()
...     for v, d in nbrs.items()
... ]
>>> DG.update(edges=e, nodes=adj)
>>> # dict-of-dict-of-dict
>>> adj = {1: {2: {"weight": 1.3}, 3: {"color": 0.7, "weight": 1.2}}}
>>> e = [
...     (u, v, {"weight": d})
...     for u, nbrs in adj.items()
...     for v, d in nbrs.items()
... ]
>>> DG.update(edges=e, nodes=adj)
>>> # predecessor adjacency (dict-of-set)
>>> pred = {1: {2, 3}, 2: {3}, 3: {3}}
>>> e = [(v, u) for u, nbrs in pred.items() for v in nbrs]
>>> # MultiGraph dict-of-dict-of-dict-of-attribute
>>> MDG = nx.MultiDiGraph()
>>> adj = {
...     1: {2: {0: {"weight": 1.3}, 1: {"weight": 1.2}}},
...     3: {2: {0: {"weight": 0.7}}},
... }
>>> e = [
...     (u, v, ekey, d)
...     for u, nbrs in adj.items()
...     for v, keydict in nbrs.items()
...     for ekey, d in keydict.items()
... ]
>>> MDG.update(edges=e)

例子

>>> G = nx.path_graph(5)
>>> G.update(nx.complete_graph(range(4, 10)))
>>> from itertools import combinations
>>> edges = (
...     (u, v, {"power": u * v})
...     for u, v in combinations(range(10, 20), 2)
...     if u * v < 225
... )
>>> nodes = [1000]  # for singleton, use a container
>>> G.update(edges, nodes)

相關用法


注:本文由純淨天空篩選整理自networkx.org大神的英文原創作品 networkx.Graph.update。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。