'Add a single node n and update node attributes.
Parameters
n : node
A node can be any hashable Python object except None.
attr : keyword arguments, optional
Set or change node attributes using key=value.
See Also
add_nodes_from
Examples
>>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
>>> G.add_node(1)
>>> G.add_node(\'Hello\')
>>> K3 = nx.Graph([(0, 1), (1, 2), (2, 0)])
>>> G.add_node(K3)
>>> G.number_of_nodes()
3
Use keywords set/change node attributes:
>>> G.add_node(1, size=10)
>>> G.add_node(3, weight=0.4, UTM=(\'13S\', 382871, 3972649))
Notes
A hashable object is one that can be used as a key in a Python
dictionary. This includes strings, numbers, tuples of strings
and numbers, etc.
On many platforms hashable items also include mutables such as
NetworkX Graphs, though one should be careful that the hash
doesn\'t change on mutables.'

def add_node(self, n, **attr):

    if (n not in self._succ):
        self._succ[n] = self.adjlist_inner_dict_factory()
        self._pred[n] = self.adjlist_inner_dict_factory()
        self._node[n] = attr
    else:
        self._node[n].update(attr)
