generic_graph_view#

generic_graph_view(G, create_using=None)[source]#

返回 G 的只读视图。

G 及其属性不会被复制,而是通过与 G 相同类(或 create_using 中指定的类)的新图对象进行查看。

Parameters:
G

一个有向/无向图/多重图。

create_usingNetworkX 图构造函数, 可选 (默认=None)

要创建的图类型。如果是图实例,则在填充前清空。 如果为 None ,则根据 G 推断适当的图类型。

Returns:
newG

通过 create_using 类查看的输入图 G 及其属性的视图。

Raises:
NetworkXError

如果 G 是多重图(或多重有向图)但 create_using 不是,或者反之。

Notes

返回的图视图是只读的(不能修改图)。 然而,视图会反映 G 中的任何更改。目的是模仿字典视图。

Examples

>>> G = nx.Graph()
>>> G.add_edge(1, 2, weight=0.3)
>>> G.add_edge(2, 3, weight=0.5)
>>> G.edges(data=True)
EdgeDataView([(1, 2, {'weight': 0.3}), (2, 3, {'weight': 0.5})])

视图展示了原始图的属性。

>>> viewG = nx.graphviews.generic_graph_view(G)
>>> viewG.edges(data=True)
EdgeDataView([(1, 2, {'weight': 0.3}), (2, 3, {'weight': 0.5})])

G 的更改会反映在 viewG 中。

>>> G.remove_edge(2, 3)
>>> G.edges(data=True)
EdgeDataView([(1, 2, {'weight': 0.3})])
>>> viewG.edges(data=True)
EdgeDataView([(1, 2, {'weight': 0.3})])

我们可以通过 create_using 参数更改图类型。

>>> type(G)
<class 'networkx.classes.graph.Graph'>
>>> viewDG = nx.graphviews.generic_graph_view(G, create_using=nx.DiGraph)
>>> type(viewDG)
<class 'networkx.classes.digraph.DiGraph'>