Networkx neighbor set not printing

前端 未结 3 1007
遇见更好的自我
遇见更好的自我 2020-12-16 19:42

I have a little problem with my networkx code. I am trying to find all the neighbors from a node in a graph, but....

neighbor = Graph.neighbors(element)
print         


        
相关标签:
3条回答
  • 2020-12-16 20:00

    From networkx 2.0 onwards, Graph.neighbors(element) returns an iterator rather than a list.

    To get the list, simply apply list

    list(Graph.neighbors(element))
    

    or use list comprehension:

    neighbors = [n for n in Graph.neighbors(element)]
    

    The first method (first mentioned by Joel) is the recommended method, as it's faster.

    Reference: https://networkx.github.io/documentation/stable/reference/classes/generated/networkx.Graph.neighbors.html

    0 讨论(0)
  • 2020-12-16 20:03

    You can make method for that like,

    def neighbors(G, n):
    """Return a list of nodes connected to node n. """
    return list(G.neighbors(n))
    

    And call that method as:

    print(" neighbours = ", neighbors(graph,'5'))
    

    Where 5 is the node in a graph and

    graph = nx.read_edgelist(path, data = (('weight', float), ))
    

    and path variable contains dataset file path value where data is in more numbers of nodes and edges.

    0 讨论(0)
  • 2020-12-16 20:09

    As others have noted, in networkx 2.0 neighbors returns an iterator rather than a list. Networkx has provided a guide for migrating code written in 1.x to 2.0. For neighbors, it recommends

    list(G.neighbors(n))
    

    (see Fastest way to convert an iterator to a list). The migration guide provides the example:

    >>> G = nx.complete_graph(5)
    >>> n = 1
    >>> G.neighbors(n)
    <dictionary-keyiterator object at ...>
    >>> list(G.neighbors(n))
    [0, 2, 3, 4]
    
    0 讨论(0)
提交回复
热议问题