dictの形式でノード、頂点、エッジの重みを含むグラフを示すための単純なネストされたdictがあります。
{node: {vertex: weight, ... } ...}
。
これが私がそれを作成する方法です:
with open(file) as f:
__, __1 = next(f).split()
for line in f:
tail, head, weight = line.split()
g1[tail] = {}
g1[tail][head] = int(weight)
このコードは私が望むdictを与えてくれます。ただし、同様のネストされたdictを作成し、このdictにアクセスするコードをさらに実行すると、エラーが発生します。コードは次のとおりです。
nodes = g1.keys()
distance = {}
for n in nodes:
distance[n] = {}
for k in nodes:
distance[n][k] = graph[n][k]
ここのどこかで、このエラーが発生します。
distance[n][k] = graph[n][k]
KeyError: '344'
このコードが実行しようとしている「344」のキーをまだ作成していないことを示します。各ノードnをdictに初期化することで、distance[n][k]のエントリを作成できると思いました。デフォルトのdictを使用してみましたが、結果は同じです。なんで?