networkx.MultiGraph.nodes¶
-
MultiGraph.
nodes
¶ A NodeView of the Graph as G.nodes or G.nodes().
Can be used as
G.nodes
for data lookup and for set-like operations. Can also be used asG.nodes(data='color', default=None)
to return a NodeDataView which reports specific node data but no set operations. It presents a dict-like interface as well withG.nodes.items()
iterating over(node, nodedata)
2-tuples andG.nodes[3]['foo']
providing the value of thefoo
attribute for node3
. In addition, a viewG.nodes.data('foo')
provides a dict-like interface to thefoo
attribute of each node.G.nodes.data('foo', default=1)
provides a default for nodes that do not have attributefoo
.Parameters: - data (string or bool, optional (default=False)) – The node attribute returned in 2-tuple (n, ddict[data]). If True, return entire node attribute dict as (n, ddict). If False, return just the nodes n.
- default (value, optional (default=None)) – Value used for nodes that dont have the requested attribute. Only relevant if data is not True or False.
Returns: Allows set-like operations over the nodes as well as node attribute dict lookup and calling to get a NodeDataView. A NodeDataView iterates over
(n, data)
and has no set operations. A NodeView iterates overn
and includes set operations.When called, if data is False, an iterator over nodes. Otherwise an iterator of 2-tuples (node, attribute value) where the attribute is specified in
data
. If data is True then the attribute becomes the entire data dictionary.Return type: NodeView
Notes
If your node data is not needed, it is simpler and equivalent to use the expression
for n in G
, orlist(G)
.Examples
There are two simple ways of getting a list of all nodes in the graph:
>>> G = nx.path_graph(3) >>> list(G.nodes) [0, 1, 2] >>> list(G) [0, 1, 2]
To get the node data along with the nodes:
>>> 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')]
If some of your nodes have an attribute and the rest are assumed to have a default attribute value you can create a dictionary from node/attribute pairs using the
default
keyword argument to guarantee the value is never 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}