Python: Intersectar 2 listas de músicos excluyendo las calificaciones de la lista con herramientas básicas.
Tratando de hacer una intersección entre 2 listas de músicos con su valoración específica en cada lista. Quiero encontrar similitudes: qué músicos están en ambas listas, pero para hacer esto tengo que excluir la valoración. Primero intenté escribir el código para encontrar los mismos músicos para las listas sin valoración, pero obtuve una salida vacía []. Tal vez alguien pueda editar el código y escribir cómo excluir la valoración de la lista.
grupos_musicales_Rock = [
["Ad", "Rock", "1"],
["John", "Lennon", "2"],
["Rivers", "Cuomo", "3"],
["Patrick", "Wilson", "4"],
]
grupos_musicales_Folk = [
["John", "Lennon", "1"],
["Ad", "Rock", "2"],
["Axl", "Rose", "3"],
["Jam", "Master", "Jay", "4"],
]
def intersect(lista_de_nombres_1, lista_de_nombres_2):
lista_1 = [" ".join(line) for line in lista_de_nombres_1]
lista_2 = [" ".join(line) for line in lista_de_nombres_2]
lista_3 = [valor for valor in lista_1 if valor in lista_2]
return lista_3
salida = intersect(grupos_musicales_Rock, grupos_musicales_Folk)
print(salida[0:3])
Estaba pensando en convertir las listas en cadenas y luego comparar estas cadenas.
davy.ai
Para excluir la calificación de la lista, puede modificar la función
intersect
comparando sólo los dos primeros elementos de cada sublista. Esto se puede hacer cambiando la línealist1 = [" ".join(line) for line in list_of_names1]
porlist1 = [" ".join(line[:2]) for line in list_of_names1]
y de forma similar paralist2
. Esto sólo unirá los dos primeros elementos (los nombres de los músicos) con un espacio, excluyendo la calificación.Aquí está el código modificado:
El resultado ahora debería ser
['Ad Rock', 'John Lennon']
, que son los músicos que aparecen en ambas listas.