Как получить значения из определенных атрибутов узла в NetworkX с помощью Python


Я работаю над групповым проектом, и нам нужно создать список всех значений из определенного атрибута узла в графике, над которым мы работаем. Каждый узел имеет 6 атрибутов, нам просто нужен список всех значений для одного из наших атрибутов.

import networkx as nx
import scipy as sp
import matplotlib.pyplot as plt
%matplotlib inline 
import urllib

url = "http://josquin.cti.depaul.edu/~rburke/courses/s14/fmh.graphml"
sock = urllib.urlopen(url)  # open URL
fmh = nx.read_graphml(sock)

for i in fmh:
    if fmh.node[i]['Race'] == 'Asian':
        fmh.add_node(i, RaceN=0)
    elif fmh.node[i]['Race'] == 'Black':
        fmh.add_node(i, RaceN=1)
    elif fmh.node[i]['Race'] == 'Hisp':
        fmh.add_node(i, RaceN=2)
    elif fmh.node[i]['Race'] == 'NatAm':
        fmh.add_node(i, RaceN=3)
    elif fmh.node[i]['Race'] == 'Other':
        fmh.add_node(i, RaceN=4)
    elif fmh.node[i]['Race'] == 'White':
        fmh.add_node(i, RaceN=5)

for i in fmh:
    if fmh.node[i]['Sex'] == 'F':
        fmh.add_node(i, SexN=0)
    elif fmh.node[i]['Sex'] == 'M':
        fmh.add_node(i, SexN=1)

Я думаю, что это все уместно. Предварительно загруженные данные имеют 5 атрибутов, мы добавили 6-й, мы просто хотим иметь возможность захватить значения для конкретного атрибута, например, скажем, составить список всех значений для RaceN атрибут.

Идея состоит в том, что у нас есть список целых чисел, которые мы можем назвать sp.функция bincount () включена.
1 2

1 ответ:

Ваш код не будет работать без дополнительной информации. Я думаю, вы хотите что-то вроде функции networkx.get_node_attributes ():

In [1]: import networkx as nx

In [2]: G = nx.Graph()

In [3]: G.add_node(1,profit=17)

In [4]: G.add_node(2,profit=42)

In [5]: a = nx.get_node_attributes(G,'profit')

In [6]: a.items()
Out[6]: [(1, 17), (2, 42)]