web-dev-qa-db-ja.com

'Graph'オブジェクトにはnetworkxモジュールの属性 'nodes_iter'がありませんpython

エラーを生成するnetworkxモジュールを使用して、python2.7に以下の関数があります。

for H in networkx.connected_component_subgraphs(G):
    bestScore = -1.0
    for n, d in H.nodes_iter(data=True):
        if d['Score'] > bestScore:
            bestScore = d['Score']
            bestSV = n
    if bestSV is not None:
        selectedSVs.add(bestSV)

エラー:

Traceback (most recent call last):
File "cnvClassifier.py", line 128, in <module>
for n, d in H.nodes_iter(data=True):
AttributeError: 'Graph' object has no attribute 'nodes_iter'

誰かが何が間違っているのか考えていますか?

13
chas

おそらくプレリリースバージョンのnetworkx-2.0を使用しているため、nodes_iter()メソッドが削除され、nodes()メソッドに同じ機能が提供されるようになりました。 networkx-2.0の変更点の詳細については、 this を参照してください。

12
Aric

リンクが再び変更された場合に備えて、今後の参考のために実際のソリューションをここに投稿します。

NetworkX 2.0以降では、次のコード行を変更する必要があります。

for n, d in H.nodes_iter(data=True):

に:

for n, d in list(H.nodes(data=True)):
5
SummerEla