2014-01-06 35 views
0

我正在搜索兩個列表中的matchin條目,並且當我找到一個匹配時,我想從一個列表中追加一些信息,並將另一些信息追加到新列表中。如何從不在當前循環中的列表附加信息

## Product list 
ta_prod = [] 

prod = open("products.txt", "r") 
for line2 in prod: 
    row2 = line2.split(",") 
    ta_prod.append(row2[4]) 


## Producs Ordered 
supne = [] 
ta_prodord = [] 
prodord = open("products_ordered.txt", "r") 
for line in prodord: 
    row = line.split(",") 
    prodordnavn = re.sub('"',"",row[1]) 
    ta_prodord.append(prodordnavn) 
    if prodordnavn in ta_prod: 
     supne.append([row[0],row[1],row[2],row2[11]]) 

我的問題是與「row2 [11]」參數。它每次都提供相同的條目,而不是與匹配鏈接的條目。

要清楚,我在哪裏寫「row2 [11]」我想在第11列(從0開始計數)追加與上面找到的匹配相同的行中的條目。

+0

沒有這裏的任何鏈接。你爲什麼認爲有一個?你還沒有提供任何方式將'row'連接到'row2'。 Python應該如何知道是什麼使它成爲「同一行」? –

+0

我不指望python知道。我希望我的編碼是錯的,這就是爲什麼我在這裏。 –

回答

0

是的,row2變量保存第一個循環的最後一行。

您可以使用字典來保存需要2行[11]值:

## Product list 
ta_prod = {} # dictionary instead of list 

prod = open("products.txt", "r") 
for line2 in prod: 
    row2 = line2.split(",") 
    prodordnavn = row2[4] # reading the referencing key 
    ta_prod[prodordnavn] = row2[11] # the value you would like to use in the other loop 


## Producs Ordered 
supne = [] 
ta_prodord = [] 
prodord = open("products_ordered.txt", "r") 
for line in prodord: 
    row = line.split(",") 
    prodordnavn = re.sub('"',"",row[1]) 
    ta_prodord.append(prodordnavn) 
    if prodordnavn in ta_prod: 
     value = ta_prod[prodordnavn] # reading the value from ta_prod dictionary by prodordnavn key 
     supne.append([row[0],row[1],row[2],value]) 
相關問題