Python - Comparar listas entre si

 
Vista:
sin imagen de perfil

Comparar listas entre si

Publicado por org.rg (5 intervenciones) el 21/02/2014 10:47:33
Hola,

soy primerizo en python y estoy intentando crear un script que me compare dos listas(a partir de 2 archivos txt) y que diga que se repite en cada lista.
Es decir:
En la lista A(A.txt) tenemos: Juan Pedro Carlos Leo Daniel
En la lista B(B.txt) tenemos: Leonardo Pedral Juanjo Daniel

El programa tendría que decir que Daniel es el nombre que se repite, podría alguien iluminarme un poco?


Gracias de antemano.
Un saludo!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Comparar listas entre si

Publicado por xve (1646 intervenciones) el 21/02/2014 14:56:33
Hola, una manera sencilla que se me ocurre es leer los dos archivos y poner los nombres en dos listas y recorrer una lista y ir buscando en la segunda lista... algo así:

1
2
3
for nombre in lista1:
    if nombre in lista2:
        print "%s existe" % existe
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Comparar listas entre si

Publicado por org.rg (5 intervenciones) el 21/02/2014 20:11:49
Gracias por la respuesta, he estado trabajando en eso pero me ha surgido un problema a la hora de abrir los archivos. El código que empleo para abrirlos es:
1
2
3
4
5
6
7
8
9
def Pr():
	lista1= open('lista1.txt','r')
	lista2= open('lista2.txt','r')
	names1=[line.strip() for line in open('lista1.txt')]
	names2=[line.strip() for line in open('lista2.txt')]
	lista1.close()
	lista2.close()
	return(names1)
	return (names2)

Me imprime names 1 pero no names 2... alguien sabe porque?
Un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Comparar listas entre si

Publicado por xve (1646 intervenciones) el 22/02/2014 16:29:11
Nos puedes adjuntar los archivos lista1 y lista2.txt? la verdad es que sin ver el contenido del archivo no se muy bien que puede estar pasando... nos los puedes adjuntar?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Comparar listas entre si

Publicado por org.rg (5 intervenciones) el 23/02/2014 11:59:25
Claro, pretendía hacerlo pero se me olvidó lo siento. Ahí van los 2 .txt.

El problema es que me crea una lista con todos los nombres que hay dentro del archivo, pero tendría que hacer lo mismo con el segundo archivo y no lo hace...

Gracias, un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Como devolver dos valores en una función

Publicado por xve (1646 intervenciones) el 23/02/2014 18:30:07
Hola, ya he visto tu error... tu función siempre devuelve la primera lista porque una vez llega al primer return, ya no continua, sale de la función... prueba algo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
def Pr():
    lista1= open('lista1.txt','r')
    lista2= open('lista2.txt','r')
    names1=[line.strip() for line in open('lista1.txt')]
    names2=[line.strip() for line in open('lista2.txt')]
    lista1.close()
    lista2.close()
    return names1,names2
 
names1,names2=Pr()
 
print names1
print names2

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Como devolver dos valores en una función

Publicado por org.rg (5 intervenciones) el 23/02/2014 19:33:14
Funciona, gracias!
Ahora el único problema que me da es TabError:
1
2
3
4
5
6
7
8
9
10
def  XC():
    lista1= open('lista1.txt','r')
    lista2= open('lista2.txt','r')
    names1=[line.strip() for line in open('lista1.txt')]
    names2=[line.strip() for line in open('lista2.txt')]
    lista1.close()
    lista2.close()
    for nombre in lista1:
		if nombre in lista2:
			print ("%s existe" (names1,names2))

El coódigo tendría que decirme que "Pedro" es el nombre que se repite en los 2 txt que he adjuntado antes :S
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Como devolver dos valores en una función

Publicado por xve (1646 intervenciones) el 23/02/2014 20:43:39
Tabula el código correctamente, recuerda que python lo quiere bien tabulado, como tiene que ser...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Como devolver dos valores en una función

Publicado por org.rg (5 intervenciones) el 24/02/2014 09:38:06
Si, fallo tonto :s acabo de empezar a programar...

Vale, ya he corregido eso. Ahora he unido el listar con el %s existe:

1
2
3
4
5
6
7
8
9
10
def  XC():
	lista1= open('lista1.txt','r')
	lista2= open('lista2.txt','r')
	names1=[line.strip() for line in open('lista1.txt')]
	names2=[line.strip() for line in open('lista2.txt')]
	for nombre in names1:
		if nombre in names2:
			print ("%s existe".format(names1,names2))
			lista1.close()
			lista2.close()

Funciona todo correctamente, al ejecutarlo no da ningún error pero me devuelve como resultado: "%s existe". Me tendría que devolver el/los nombres repetidos... algún consejo?
Gracias un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar