Атрибут узла networkx, если он не существует, создайте его - PullRequest
0 голосов
/ 01 ноября 2019

Мне нужно проверить, есть ли у узла атрибут (Атрибут вообще не может существовать для узла). Примерно так возвращается "KeyError: 'size".

G = nx.Graph()
G.add_node("firstNode")
for node in G.nodes:
    if(G.nodes[node]['size'] is None):
        G.nodes[node]['size']=35    
#KeyError: 'size'

1 Ответ

1 голос
/ 05 ноября 2019

Если мы проверим, какой тип объекта G.nodes[node], мы увидим, что это словарь.

type(G.nodes[node])
# result <class 'dict'>

Когда вы пытаетесь получить доступ к несуществующему ключу в словаре, вы получаете эту ошибку. проверить этот вопрос Я получаю сообщение об ошибке ключа в python .

У вас есть два способа справиться с этим:

import networkx as nx

G = nx.Graph()
G.add_node("firstNode")

# option 1

for node in G.nodes:
   node_dict = G.nodes[node]
   if node_dict.get('size') is None:
      node_dict['size']=35

# option 2

for node in G.nodes:
   node_dict = G.nodes[node]
   if 'size' not in node_dict or node_dict['size'] is None:
      node_dict['size']=35
...