edges_equal#

edges_equal(edges1, edges2, *, directed=False)[source]#

Return whether edgelists are equal.

Equality here means equal as Python objects. Edge data must match if included. Ordering of edges in an edgelist is not relevant; ordering of nodes in an edge is only relevant if directed == True.

Parameters:
edges1, edges2iterables of tuples

Each tuple can be an edge tuple (u, v), or an edge tuple with data dict s (u, v, d), or an edge tuple with keys and data dict s (u, v, k, d).

directedbool, optional (default=False)

If True, edgelists are treated as coming from directed graphs.

Returns:
bool

True if edgelists are equal, False otherwise.

Examples

>>> G1 = nx.complete_graph(3)
>>> G2 = nx.cycle_graph(3)
>>> edges_equal(G1.edges, G2.edges)
True

Edge order is not taken into account:

>>> G1 = nx.Graph([(0, 1), (1, 2)])
>>> G2 = nx.Graph([(1, 2), (0, 1)])
>>> edges_equal(G1.edges, G2.edges)
True

The directed parameter controls whether edges are treated as coming from directed graphs.

>>> DG1 = nx.DiGraph([(0, 1)])
>>> DG2 = nx.DiGraph([(1, 0)])
>>> edges_equal(DG1.edges, DG2.edges, directed=False)  # Not recommended.
True
>>> edges_equal(DG1.edges, DG2.edges, directed=True)
False

This function is meant to be used on edgelists (i.e. the output of a G.edges() call), and can give unexpected results on unprocessed lists of edges:

>>> l1 = [(0, 1)]
>>> l2 = [(0, 1), (1, 0)]
>>> edges_equal(l1, l2)  # Not recommended.
False
>>> G1 = nx.Graph(l1)
>>> G2 = nx.Graph(l2)
>>> edges_equal(G1.edges, G2.edges)
True
>>> DG1 = nx.DiGraph(l1)
>>> DG2 = nx.DiGraph(l2)
>>> edges_equal(DG1.edges, DG2.edges, directed=True)
False