以下の様なコードでTypeError: 'generator' object is not subscriptableというエラーが出ました。
Python
1import networkx as nx 2 3all_shortest = nx.all_pairs_dijkstra_path(self.graph) 4 5 for s in range(self.ACTIVE_NODES): 6 for d in range(self.ACTIVE_NODES): 7 if s != d: 8 next = all_shortest[s][d][1] #ここでTypeError: 'generator' object is not subscriptable 9 port = self.ports[s][next] 10 routing_nodes[s][d] = next 11 routing_ports[s][d] = port 12 else: 13 routing_nodes[s][d] = -1 14 routing_ports[s][d] = -1
ある論文に載っていたプログラムです。その為動くとは思うのですがエラーが出ているという事は何かしら環境に問題があると思います。他の部分でnetworkxのバージョンの違いによるエラーがあったので、これもnx.all_pairs_dijkstra_path(self.graph)の戻り値であるall_shortestに何か問題があるのでは無いかと思います。しかしそもそもこのエラーはどういう事なのでしょうか?
追記ーーーーーーーーーーーーーーーーーー
以下の様にしました。
すると今度は別の場所でValueError: setting an array element with a sequence.となります、、、
Python
1import networkx as nx 2 3routing_nodes = np.full([self.ACTIVE_NODES]*2, -1.0, dtype=int) 4 5all_shortest = list(nx.all_pairs_dijkstra_path(self.graph)) 6 7 for s in range(self.ACTIVE_NODES): 8 for d in range(self.ACTIVE_NODES): 9 if s != d: 10 next = all_shortest[s][d][1] 11 port = self.ports[s][next] 12 routing_nodes[s][d] = next #ここでValueError: setting an array element with a sequence. 13 routing_ports[s][d] = port 14 else: 15 routing_nodes[s][d] = -1 16 routing_ports[s][d] = -1 17
今度はどういう事でしょうか?
回答2件
あなたの回答
tips
プレビュー