まず、グラフを別の方法で表現する必要があります。ユーザー入力は行列である必要があります。
行列の項目 (i,j) は、頂点 i から頂点 j に X で重み付けされたエッジがある場合は X であり、ない場合は (たとえば) "-1" になります。(もちろん、これはすべて交換可能です)。
0 1 2
0 -1 0 1
1 1 -1 4
2 1 4 -1
したがって、入力文字列は次のようになります。
-1,0,1;1,-1,4;1,4,-1
その後、次のようにcollections.defaultdict
( documentation ) を使用します。
>>> d = defaultdict(dict)
>>> input = '-1,0,1;1,-1,4;1,4,-1'
>>> lst = map(lambda x: map(lambda y: int(y), x.split(',')), input.split(';'))
>>> for i,j in enumerate(lst):
... for k,l in enumerate(j):
... d[i][k] = l
...
>>> d
defaultdict(<type 'dict'>, {0: {0: -1, 1: 0, 2: 1}, 1: {0: 1, 1: -1, 2: 4}, 2: {
0: 1, 1: 4, 2: -1}})