私はnetworkxと一般的なグラフ作成にはとても新しいので、あなたの助けが必要でした。同じ属性を持つノードが存在しない場合にのみ、ネットワークxにノードを追加してください。
私は、各ノードがnode_id(グラフを作るために反復している点の数だけです)と5つの属性を持つグラフを設計しています。
I.e.
G.add_node(node_id)
G[id]['Coord1'] = 3
G[id]['Coord2'] = 7
G[id]['Coord3'] = None
G[id]['Coord4'] = None
G[id]['Coord5'] = None
は、だから今、私はいくつかの座標で、新しいノードを追加することを検討したいです。
グラフに新しいノードを追加する前に、追加しようとしているノードと同じ属性(コードの1つ)を持っていないノードがないことを確認します。
共有されているcoordを持つノードがすでに存在する場合は、新しいノードを追加するのではなく、単に既存のノードに変更を加えます。
私がこれを行うと考えることができる唯一の方法は、グラフのすべての既存のノードをループし、属性の1つがノードと同じであるかどうかを確認することでした。例えば。
find_node = [attrdict for n,attrdict in G.node.items() if attrdict['coord1'] == tempcoord ]
ここで、tempcoordは、追加しようとしているノード上の関心のある座標です。
これは、ノードを追加して既存のノードをすべてチェックしたいと思うたびに、これを行うことは明らかに非常に非効率的です。私の質問は次のとおりです。
networkxは同じIDを持つ新しいノードを追加しませんが、同じ属性を共有するノードには拡張されません。
また、すべてのこれらの「重複」ノードを使用してグラフを作成し、すべてのノードを追加した後に共有属性を持つすべてのノードを1つのノードに集約する方が良いでしょうか?
多少畳み込まれた説明に申し訳ありませんが、私はそれが意味をなされることを願っています。
これらの回答は適切ではありませんか? http://stackoverflow.com/questions/23233127/how-to-get-values-from-specific-node-attributes-in-networkx-with-python?rq=1またはhttp://stackoverflow.com/questions/ 15644684/for-query-for-edge-and-node-attributes-in-networkx?rq = 1 – zezollo
こんにちはZezollo、これらのスレッドに感謝します。彼らは間違いなく関連していますが、私の質問に本当に答えませんでした。私は属性値やインデックスのリストを取得する方法を知っており、特定の属性を持つすべてのノードを選択するだけです。私が疑問に思っていたのは、ノードインデックスではなく、固有の属性に基づいてノードにアクセスできるかどうかということでした。 – AHawks
本質的には、ノードインデックスだけでなく複数のハッシュ可能な属性でノードにアクセスできるようにしたいと考えています。これを行う方法はありますか? – AHawks