[Python] Comparar elementos en dos listas distintas

Estándar

Hace un par de semanas me solicitaron en el trabajo revisar si contábamos o no en el servidor con fotografías de todos los productos, las fotografías se encontraban en una carpeta especifica y tienen por nombre el código interno del producto, a simple vista parece una tarea relativamente sencilla, solo hacía falta buscar el código de cada producto en el directorio de las fotos, pero contamos con cerca de 15 mil códigos registrados y revisar de uno en uno manualmente habría llevado una eternidad, así que opté por automatizar la revisión.

Primero obtuve un listado de los códigos de todos los productos registrados, después hice otro listado con los nombres de los archivos sin extensión en el directorio de fotos y guarde ambos con extensión txt. Y finalmente escribí el siguiente script:

almacen1 = open('almacen.txt', 'r')
nofoto = open('lista.txt', 'r')

lista1 = []
lista2 = []
final = []

for line in almacen1:
	lista1.append(line)
	
for line in nofoto:
	lista2.append(line)
	
for i in lista1:
	if i in lista2:
		final.append('Si')
	else:
		final.append('No')

open("existe.txt", "w").write("\n".join(("".join(item)) for item in final))

Trataré de explicar su funcionamiento a grandes rasgos. Todo el código hasta el final del segundo FOR es para abrir los archivos y convertirlos en listas python, la lista1 contiene los códigos del los productos y la lista2 las fotos ya existentes en el servidor. El tercer FOR es el que hace todo el trabajo, cada elemento en la lista1 lo revisa verificando si se encuentra en la lista2, de ser así guarda el resultado Si/No en una tercera lista. Finalmente crea un archivo txt con los resultados. Cómo pueden ver es un script bastante útil para cuando requerimos comparar listas muy grandes y sumamente sencillo.

Por último hice mi reporte en una hoja de calculo y simplemente tuve que copiar y pegar los resultados que obtuve.

hcCualquier duda o comentario es bienvenido.

Anuncios

2 comentarios en “[Python] Comparar elementos en dos listas distintas

  1. Juan Herrera

    Hola, necesito hacer un script que compare 2 archivos diferente con 200 ips aproximadamente y que me diga cual es nueva (que no existe en la lista 1) y que me de x mensaje en las que se repiten y que se genere un documento de texto o csv con los resultados de la comparacion, podrias darme una ayudita. Gracias. Buen ejemplo amigo.

    • Hola, lo que necesitas es justamente lo que hace este mismo script, solo debes adaptarlo a tus necesidades. Básicamente tienes que adaptar la parte del último for, repasando los elementos de la lista2 y verificar si se encuentran en la lista uno.

      for item in lista2:
          if item in lista1:
              print item + ' Está repetido'
          else:
              print item + ' Es nuevo'

      Finalmente para generar el archivo de texto final puedes ejecutarlo desde una terminal de la siguiente forma y en lugar de imprimir en pantalla los mensajes te lo envía directamente a un archivo.

      python script.py>resultado.txt

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s