1. ホーム
  2. python

[解決済み] NetworkXグラフに属性付きノードを追加する

2022-02-09 16:02:29

質問

ネットワーク・チュートリアル は、属性を持つノードを追加する可能性を示唆しています。

<ブロッククオート

また、コンテナが以下のような2つのタプルを生成する場合、ノードの属性とともにノードを追加することができます。 (node, node_attribute_dict)

で試してみると add_node メソッドを使用すると、TypeError が発生します。

>>> import networkx as nx
>>> G = nx.Graph()
>>> G.add_node(('person1', {'name': 'John Doe', 'age': 40}))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/media/windows/Users/godidier/Projects/semlab/research/env/lib/python3.7/site-packages/networkx/classes/graph.py", line 506, in add_node
    if node_for_adding not in self._node:
TypeError: unhashable type: 'dict'

それとも、属性付きのノードを追加するのは add_nodes_from メソッドを使用します。

どのように解決するのですか?

あなたの場合、正しい方法は G.add_nodes_from

>>> G = nx.Graph()
>>> G.add_nodes_from([('person1', {'name': 'John Doe', 'age': 40})])
>>> G.nodes['person1']
{'name': 'John Doe', 'age': 40}

または、直接 add_node :

>>> G = nx.Graph()
>>> G.add_node('person1', name='John Doe', age=40)
>>> G.nodes['person1']
{'name': 'John Doe', 'age': 40}