Luego de de esta larga búsqueda de información pudimos resolver este inconveniente que tienen muchos los lectores. Te compartimos la solución y esperamos resultarte de mucha ayuda.
Solución:
Está utilizando la versión 2.0 de networkx. Que cambió de usar un dict
por G.degree()
a usar un dict-like (pero no dict) DegreeView
. Consulte esta guía.
Para tener los grados en una lista, puede usar una lista de comprensión:
degrees = [val for (node, val) in G.degree()]
Me gustaría agregar lo siguiente: si está inicializando el gráfico no dirigido con nx.Graph()
y agregando los bordes después, solo tenga en cuenta que networkx no garantiza que se conserve el orden de los nodos; esto también se aplica a degree()
. Esto significa que si utiliza el enfoque de comprensión de lista y luego intente acceder al grado por índice de lista, es posible que los índices no correspondan a los nodos correctos. Si desea que se correspondan, puede hacer lo siguiente:
degrees = [val for (node, val) in sorted(G.degree(), key=lambda pair: pair[0])]
Aquí hay un ejemplo simple para ilustrar esto:
>>> edges = [(0, 1), (0, 3), (0, 5), (1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (2, 5)]
>>> g = nx.Graph()
>>> g.add_edges_from(edges)
>>> print(g.degree())
[(0, 3), (1, 4), (3, 3), (5, 2), (2, 4), (4, 2)]
>>> print([val for (node, val) in g.degree()])
[3, 4, 3, 2, 4, 2]
>>> print([val for (node, val) in sorted(g.degree(), key=lambda pair: pair[0])])
[3, 4, 4, 3, 2, 2]
Reseñas y puntuaciones de la guía
Si haces scroll puedes encontrar las observaciones de otros programadores, tú además puedes dejar el tuyo si lo deseas.