2017-08-25 32 views
0

這是我寫的代碼,它基本上描述了在源和目的地之間具有一個共同城市的飛行連接。對大多數測試用例來說似乎是正確的,但不能滿足這個特定的測試用例。兩個項目之間的連接具有中間項目作爲python中的連接

def onehop(lis): 
    hop=[] 
    for (i,j) in lis: 
     for (k,l) in lis: 
      if i==k and j!=l: 
       return sorted(lis) 
      if (i!=k and j!=l)and(i==l or j==k) and (((i,j) not in hop) and ((k,l) not in hop)): 
       m=lis.pop(lis.index((i,j))) 
       n=lis.pop(lis.index((k,l))) 
       hop.extend([m,n]) 
    for i in range(len(hop)): 
     if hop[i][0]>hop[i][1]: 
      hop[i]=(hop[i][1],hop[i][0]) 
    ans=sorted(hop,key=lambda item: (item[0],item[1])) 
    return ans 

onehop([(2,3),(1,2),(3,1),(1,3),(3,2),(2,4),(4,1)]) 

輸出我的預期:

[(1, 2), (1, 3), (1, 4), (2, 1), (3, 2), (3, 4), (4, 2), (4, 3)] 

輸出I獲得:

[(1, 2), (1, 3), (2, 3), (2, 4), (3, 1), (3, 2), (4, 1)] 
+0

你可以給*不*產生正確的輸出輸入的例子嗎? – glibdud

+0

>>>頻率([1,2,3,4,5,5,4,3,2,3,4,5,5,4,5]) ([1],[5]) –

回答

0
def onehop(lis): 
    hop=[] 
    for (i,j) in lis: 
     for (k,l) in lis:  
      if j==k and i!=l : 
       hop.append([i,l]) 
    unique = [list(x) for x in set(tuple(x) for x in hop)] 
    ans=sorted(unique,key=lambda item: (item[0],item[1])) 
    ans1 = [tuple(l) for l in ans] 
    return(ans1) 
+0

我的輸出爲:[(1,2),(1,3),(1,4),(2,1),(3,2),(3,4),(4,2),(4,3 )] – ramya

+1

希望它有助於:) – ramya

+0

這似乎是正確的。你有沒有嘗試過其他各種測試用例? –