Dada una lista de conjuntos, la tarea es escribir un programa de Python para comparar elementos con el conjunto de argumentos y devolver uno con el máximo de elementos coincidentes.
Ejemplos:
Entrada: test_list = [{4, 3, 5, 2}, {8, 4, 7, 2}, {1, 2, 3, 4}, {9, 5, 3, 7}], arg_set = {9 , 6, 5, 3}
Salida: {9, 3, 5, 7}
Explicación: el conjunto resultante tiene el máximo de elementos coincidentes.
Entrada: test_list = [{4, 3, 5, 2}, {8, 4, 7, 2}, {1, 2, 3, 4}, {9, 5, 3, 7}], arg_set = {4 , 6, 5, 3}
Salida: {2, 3, 4, 5}
Explicación: el conjunto resultante tiene el máximo de elementos coincidentes.
Método 1: usando loop + set.intersection()
En esto, realizamos la tarea de obtener todos los elementos comunes con el conjunto de argumentos usando la intersection(), y obtenemos su longitud usando len(), y la longitud máxima y el conjunto se comparan y actualizan durante la iteración.
Python3
# Python3 code to demonstrate working of # Most common elements set # Using loop + intersection() # initializing list test_list = [{4, 3, 5, 2}, {8, 4, 7, 2}, {1, 2, 3, 4}, {9, 5, 3, 7}] # printing original list print("The original list is : " + str(test_list)) # initializing arg_set arg_set = {9, 6, 5, 3} res = set() max_len = 0 for sub in test_list: # updating max value on occurrence if len(sub.intersection(arg_set)) > max_len: max_len = len(sub.intersection(arg_set)) res = sub # printing result print("Max Set intersection : " + str(res))
Producción:
The original list is : [{2, 3, 4, 5}, {8, 2, 4, 7}, {1, 2, 3, 4}, {9, 3, 5, 7}] Max Set intersection : {9, 3, 5, 7}
Método 2: usar max() + lista de comprensión + intersection()
En esto, el paso inicial es verificar las longitudes de todos los resultados de conjuntos intersecados y obtener el máximo usando max(). A continuación, se extrae la tarea de establecer qué coincidencias con la longitud requerida.
Python3
# Python3 code to demonstrate working of # Most common elements set # Using loop + intersection() # initializing list test_list = [{4, 3, 5, 2}, {8, 4, 7, 2}, {1, 2, 3, 4}, {9, 5, 3, 7}] # printing original list print("The original list is : " + str(test_list)) # initializing arg_set arg_set = {9, 6, 5, 3} # getting maximum length max_len = max(len(sub.intersection(arg_set)) for sub in test_list) # getting element matching length res = [sub for sub in test_list if len(sub.intersection(arg_set)) == max_len][0] # printing result print("Set intersection : " + str(res))
Producción:
The original list is : [{2, 3, 4, 5}, {8, 2, 4, 7}, {1, 2, 3, 4}, {9, 3, 5, 7}] Max Set intersection : {9, 3, 5, 7}
Publicación traducida automáticamente
Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA