2014-01-06 1 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

여기에 어떤 링크가되지 않습니다 :

당신은 필요한 ROW2 [11] 값을 저장하기 위해 사전을 사용할 수 있습니다. 왜 거기 있다고 생각하니? 'row'와'row2'를 연결하는 방법을 제공하지 않았습니다. 파이썬이 그것을 "같은 행"으로 만드는 이유를 어떻게 알았습니까? –

+0

파이썬이 알기를 기대하지 않습니다. 코딩이 잘못 될 것으로 예상했기 때문에 여기에 있습니다. –

답변

0

예, row2 변수는 첫 번째 루프에서 마지막 행 2를 보유합니다.

## 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]) 
관련 문제