Comparación de valores entre 2 archivos CSV y escritura en un 3er archivo CSV

Estoy tratando de comparar los valores de una columna particular entre 2 csv. Intenté el siguiente código para el mismo. Sin embargo, no estoy obteniendo ningún resultado y tampoco error. Por favor, ayúdame con esto

with open("File1.csv", "rb") as in_file1, open("File2.csv", "rb") as in_file2,open("File3.csv", "wb") as out_file: reader1 = csv.reader(in_file1) reader2 = csv.reader(in_file2) writer = csv.writer(out_file) for row2 in reader2: for row1 in reader1: if row2[0] == row1[0]: row2[1] = row1[1] writer.writerow(row2) 

Aquí es cómo se ven los datos:

 File 1 A 100 B 200 C 300 D 400 E 500 FIle 2 A C E E E D File 3 (Should be) A 100 C 300 E 500 E 500 E 500 D 400 

File1.csv es una asignación. Léalo primero y guárdelo en un diccionario. Luego itere sobre File2.csv y escríbalo a File3.csv junto con el valor recuperado del diccionario de mapeo.

El siguiente código funciona para su ejemplo:

 with open("File1.csv", "rb") as in_file1: d = dict(csv.reader(in_file1, delimiter=' ')) with open("File2.csv", "rb") as in_file2, open("File3.csv", "wb") as out_file: writer = csv.writer(out_file, delimiter=' ') for rec in csv.reader(in_file2, delimiter=' '): writer.writerow((rec[0], d[rec[0]])) 

Solo para una ilustración, d ve así:

 {'A': '100', 'B': '200', 'C': '300', 'D': '400', 'E': '500'} 

Los valores son cadenas (no enteros), pero esto no es un problema, ya que simplemente los estamos imprimiendo en un archivo.

¿Por qué no simplemente usarlo de esta manera?

 lookup = {} with open('file1', 'r') as f: lookup = dict([l.split() for l in f.read().split('\n') if len(l) > 0]) with open('file2', 'r') as file2, open('out', 'w') as out: for line in file2.readlines(): line = line.strip() out.write("%s %s\n" % (line, lookup[line])) 

No veo un punto usando csv aquí