MultiDiGraph.nodes#
- property MultiDiGraph.nodes#
一个 NodeView 对象,表示图的节点视图,可以通过 G.nodes 或 G.nodes() 访问。
可以作为
G.nodes
用于数据查找和集合操作。也可以作为G.nodes(data='color', default=None)
返回一个 NodeDataView,该视图报告特定的节点数据,但不提供集合操作。它也提供了一个类似字典的接口,其中G.nodes.items()
迭代(节点, 节点数据)
的二元组,而G.nodes[3]['foo']
提供节点3
的foo
属性值。此外,视图G.nodes.data('foo')
为每个节点的foo
属性提供了一个类似字典的接口。G.nodes.data('foo', default=1)
为没有属性foo
的节点提供一个默认值。- 参数:
- data字符串或布尔值,可选 (默认为 False)
在二元组 (n, ddict[data]) 中返回的节点属性。如果为 True,则将整个节点属性字典作为 (n, ddict) 返回。如果为 False,则只返回节点 n。
- default值,可选 (默认为 None)
用于没有请求属性的节点的值。仅当 data 不是 True 或 False 时相关。
- 返回:
- NodeView
允许对节点执行类似集合的操作,以及节点属性字典查找和调用以获取 NodeDataView。NodeDataView 迭代
(n, data)
并且没有集合操作。NodeView 迭代n
并包含集合操作。调用时,如果 data 为 False,则返回节点的迭代器。否则返回二元组 (节点, 属性值) 的迭代器,其中属性在
data
中指定。如果 data 为 True,则属性成为整个数据字典。
注意
如果不需要节点数据,使用表达式
for n in G
或list(G)
更简单且等效。示例
有两种简单的方法获取图中所有节点的列表
>>> G = nx.path_graph(3) >>> list(G.nodes) [0, 1, 2] >>> list(G) [0, 1, 2]
获取节点及其数据
>>> G.add_node(1, time="5pm") >>> G.nodes[0]["foo"] = "bar" >>> list(G.nodes(data=True)) [(0, {'foo': 'bar'}), (1, {'time': '5pm'}), (2, {})] >>> list(G.nodes.data()) [(0, {'foo': 'bar'}), (1, {'time': '5pm'}), (2, {})]
>>> list(G.nodes(data="foo")) [(0, 'bar'), (1, None), (2, None)] >>> list(G.nodes.data("foo")) [(0, 'bar'), (1, None), (2, None)]
>>> list(G.nodes(data="time")) [(0, None), (1, '5pm'), (2, None)] >>> list(G.nodes.data("time")) [(0, None), (1, '5pm'), (2, None)]
>>> list(G.nodes(data="time", default="Not Available")) [(0, 'Not Available'), (1, '5pm'), (2, 'Not Available')] >>> list(G.nodes.data("time", default="Not Available")) [(0, 'Not Available'), (1, '5pm'), (2, 'Not Available')]
如果你的某些节点有一个属性,而其余节点被假定有一个默认属性值,你可以使用
default
关键字参数从节点/属性对创建字典,以确保值永远不是 None>>> G = nx.Graph() >>> G.add_node(0) >>> G.add_node(1, weight=2) >>> G.add_node(2, weight=3) >>> dict(G.nodes(data="weight", default=1)) {0: 1, 1: 2, 2: 3}