2010-08-23 4 views
1

У меня есть узлы со списком атрибутов для каждого вызванного «раза» в моем случае. Я сделал простую модель, подобную этой, и я получаю KeyError'times. Мне нужен мой график, сохраняющий каждый узел со списком «times» в качестве атрибута. Как я могу это исправить?добавить кивки и список атрибутов и KeyError!

import networkx as nx 
G = nx.DiGraph() 
for u in range(10): 
    for t in range(5): 
     if G.has_node(u): 
      G[u]['times'].append(t) 
     else: 
      G.add_node(u,times=[t]) 
print(G.nodes(data=True)) 

ответ

0

Попробуйте

import networkx as nx 
G = nx.DiGraph() 
for u in range(10): 
    for t in range(5): 
     if G.has_node(u): 
      if not 'times' in G[u] # this 
       G[u]['times'] = [] # and this 
      G[u]['times'].append(t) 
     else: 
      G.add_node(u,times=[t]) 
print(G.nodes(data=True)) 
+0

что я получил от этого - каждый узел с одним числом в 'times': [(0, {'times': [0]})] ... но я ищу это: [(0, {'times': [0,1,2,3]})] ... извините, мой образец немного глуп! – masti

1

Вы можете сделать

G[u].setdefault('times', []).append(t) 

вместо

G[u]['times'].append(t) 
+0

все равно получается тот же результат: [(0, {'times': [0]})] и т. Д. Но я ищу это: [(0, {'times': [0,1, 2,3]})] :( – masti

0

Это то, что я искал, довольно легко!

import networkx as nx 
G = nx.DiGraph() 
for u in range(2): 
    for t in range(5): 
     if u in G: 
      G.node[u]['times'].append(t) 
     else: 
      G.add_node(u,times=[t]) 
print(G.nodes(data=True)) 
0

Возможно ли напечатать значения атрибутов в графическом дисплее, используя say draw_networkx или что-то в этом роде?