

nx.short_path_lengthを使用して、辞書型で取得したノード毎の  
始点からの距離を、リストとして抽出したいのですが、以下のコードだと  
エラーが出てしまいました。どうしたらよいでしょうか？

[code]

    d=nx.shortest_path_length(G,source="一般顧客",target=None)
    f=list(d.values())
    node_color=[f[node] for node in G.nodes()]
    node_color
    
[/code]

[code]

    TypeError                                 Traceback (most recent call last)
    <ipython-input-44-3dc896932224> in <module>
          1 d=nx.shortest_path_length(G,source="一般顧客",target=None)
          2 f=list(d.values())
    ----> 3 node_color=[f[node] for node in G.nodes()]
          4 node_color
    
    <ipython-input-44-3dc896932224> in <listcomp>(.0)
          1 d=nx.shortest_path_length(G,source="一般顧客",target=None)
          2 f=list(d.values())
    ----> 3 node_color=[f[node] for node in G.nodes()]
          4 node_color
    
    TypeError: list indices must be integers or slices, not str
    
[/code]


CC BY-SA 4.0
2020-03-25T06:13:58.533
64102
2020-03-27T23:28:55.180
2020-03-25T07:56:43.523
19110
38030
question
python
ディクショナリの要素のリスト化


まず

[code]

    G.nodes()
    
[/code]

の中身を確認してください。要素が文字列になっていませんか？  
そのためにf[node]でエラーになっています。

場合によっては、辞書のdをそのまま使って

[code]

    node_color = [d[node] for node in G.nodes()]
    
[/code]

でも希望の値が得られるかもしれません。


CC BY-SA 4.0
2020-03-27T23:28:55.180
64168
2020-03-27T23:28:55.180
35708
64102
answer