问题
Just wondering if there is convenient networkx function that returns a list of edges connected to a given node (or nodes) (e.g. my_node_name
) in a graph (e.g. G
).
I can do it this way:
edlist=[]
for ed in G.edges():
if 'my_node_name' in ed:
edlist.append(ed)
but expect there might be a better way?
回答1:
If the graph is undirected, you can use
G.edges(node)
In networkx 2.x this is an EdgeDataView
object. In networkx 1.x this is a list - if you want a generator in 1.x rather than getting the whole list, G.edges_iter(node)
works (this no longer exists in 2.x).
If the graph is directed the command above will not give the in-edges. Use
G.in_edges(node)
G.out_edges(node)
These are views in 2.x. In 1.x these are lists and there are generator options: G.in_edges_iter(node)
and G.out_edges_iter(node)
回答2:
You can use the method edges
G.edges(['my_node_name'])
or the function edges
networkx.edges(G, ['my_node_name'])
来源:https://stackoverflow.com/questions/33078907/get-all-edges-linked-to-a-given-node-in-a-networkx-graph