2016-05-06 64 views
0

我試圖尋找在每一個元組數,把它的另一對列表中的一個值將元組對放入字典中?

節點的數量給定,但是我沒有使用它

我不明白錯誤,我該如何解決它?

nodes_number = 4 
dic = defaultdict(list) 
my_list = [(0,1),(1,2),(3,1)] 
for i in my_list: 
    dic[i[0]].append(i[1]) 
return dic 

我的代碼輸出

{0: [1], 1: [2], 3: [1]} 

輸出所需

{0: [1], 1: [0, 2, 3], 2: [1], 3: [1]} 

回答

2

確保同時添加(X,Y)和(Y,X):

dic = defaultdict(list) 
my_list = [(0,1),(1,2),(3,1)] 
for x, y in my_list: 
    dic[x].append(y) 
    dic[y].append(x) 
+0

現在感謝它的工作,但有沒有其他方式使用nodes_number?因爲它爲更多的元組花費更多的時間 – jack

+0

節點號是不需要的。我不確定你在第一種情況下如何使用它。我不知道如何添加查看節點編號的代碼會以任何方式加快此功能。 – phihag

2

你忘了添加的每個對反向爲好。

+0

由於現在它的工作,但有沒有使用nodes_number其他方式? – jack

+0

你可以用它來初始化帶有空列表的字典。 –

+0

你可以告訴我,因爲我的代碼需要更多的時間用於大元組 – jack