main_dict=
{1: {'Origin': '001', 'Destination': '002', 'Cost': '0100.00','Time': '04.00'},
2: {'Origin': '002', 'Destination': '003', 'Cost': '0500.00', 'Time': '01.50'},
3: {'Origin': '003', 'Destination': '004', 'Cost': '0200.00', 'Time': '11.40'},
4: {'Origin': '002', 'Destination': '004', 'Cost': '0700.00', 'Time': '10.00'},
5: {'Origin': '004', 'Destination': '006', 'Cost': '0550.00', 'Time': '06.75'},
6: {'Origin': '004', 'Destination': '005', 'Cost': '0750.00', 'Time': '10.50'},
7: {'Origin': '005', 'Destination': '006', 'Cost': '0460.00', 'Time': '08.00'},
8: {'Origin': '002', 'Destination': '005', 'Cost': '1500.00', 'Time': '05.75'}}
count=9
first_list=[]
second_list=[]
for c in range(1,count):
first_list.append(main_dict[c]['Origin']) #puts all origins in one list
second_list.append(main_dict[c]['Destination'])#puts all destinations iin one list
locations=[]
locations.extend(first_list)
locations.extend(second_list)
locations=(list(set(locations)))#gets rid of any duplicates
locations.sort()
mat_nxn = [[None for x in range(len(locations))] for y in range(len(locations))] #in this section the main matrix is created
for i in range(len(locations)):
mat_nxn[0][i]=locations[i] #fills the first row with the locations
mat_nxn[i][0]=locations[i] #fills the first column with the locations
for n in range(0,len(locations)-1):
for i in range(0,len(locations)):
if str(mat_nxn[0][n])==main_dict[n+1]['Origin'] or str(mat_nxn[i][0])==main_dict[i+1]['Destination'] :
a=int(mat_nxn[0][n])
b=int(mat_nxn[n][0])
mat_nxn[b][a]=main_dict[n+1].values()
だから私のコードは辞書の情報をNxNマトリックスに配置することです。どのように動作するかは "Origin"と "Destination"が "border" martixの2番目のIf条件を使用するか、または
、私たちは私が同じ辞書で述べたように「宛先」に「起源」から行くことができるとしましょう、それは右下の行列(Xにそれを追加される場合、Y)行列 の例は、最初の辞書では「Origin 001」から「Destination 002」に行くことができるので、辞書の値u NDERマトリックス中X、Y(001002) 私の問題は、私はor
for
2内部ループ
for n in range(0,len(locations)-1):
for i in range(0,len(locations)):
if str(mat_nxn[0][n])==main_dict[n+1]['Origin'] or str(mat_nxn[i][0])==main_dict[i+1]['Destination'] :
とif
条件を使用するコードの最後の部分に今問題があれば、私は重複していることです"Origin" 私の場合は002です。残りの "Destinations"はチェックされず、最初のものだけが出力されますので、私の出力は完了できません。どうすればそれらをチェックすることができますか?私はor
を間違った方法で使用しましたか? は、任意のヘルプ
出力絶対行列(リストのリスト)でなければならないのでしょうか?それとも、それを模倣する別の構造ですか? –
いいえ、dictsのdictsはうまくいきますが、 "Origin"から "Destination"への移動がなければ(X、Y)はNoneを表示しなければならないことに留意してください – Enigma