首先,你需要以不同的方式表示圖。用戶輸入應該是一個矩陣。
如果存在從頂點i到頂點j的邊的加權X,則矩陣中的項(i,j)應該爲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}})
你能解釋一下你的輸入和輸出更好? –
因此,從頂點0到頂點1有一個加權爲0的邊。對吧? 這是如何從輸入中隱含的? –
@OfirIsrael:我的權利。實際上,我從用戶處取得字符串輸入,並進行一些字符串到整數轉換並將輸入保存到列表中。現在我想將列表轉換成字典字典 – user2015915