Las diferencias simétricas entre grupos de conjuntos son elementos que pertenecen a cualquiera de los conjuntos pero que no están presentes en ningún otro conjunto. Dada una lista de conjuntos, la tarea es escribir un programa en Python para obtener la diferencia simétrica de los mismos.
Entrada: lista_prueba = [{5, 3, 2, 6, 1}, {7, 5, 3, 8, 2}, {9, 3}, {0, 3, 6, 7}]
Salida: {8, 1, 9, 0}
Explicación: 8, 1, 9, 0 ocurren solo 1 vez en todo el contenedor.
Entrada: lista_prueba = [{5, 3, 2, 6, 1}, {7, 5, 3, 8, 2}, {9, 3}]
Salida: {8, 1, 9}
Explicación: 8, 1, 9 ocurren solo 1 vez en todo el contenedor.
Método #1: Usando Counter() + chain.from_iterable()
Este método se utiliza para verificar todos los elementos que tienen 1 como conjuntos de frecuencia general mediante aplanamiento. Counter() extrae frecuencias y luego se pueden extraer todos los elementos con recuento 1.
Python3
# Python3 code to demonstrate working of # Symmetric Difference of Multiple sets # Using Counter() + chain.from_iterable() from collections import Counter from itertools import chain # initializing list test_list = [{5, 3, 2, 6, 1}, {7, 5, 3, 8, 2}, {9, 3}, {0, 3, 6, 7}] # printing original list print("The original list is : " + str(test_list)) # getting frequencies using Counter() # from_iterable() flattens the list freq = Counter(chain.from_iterable(test_list)) # getting frequency count 1 res = {idx for idx in freq if freq[idx] == 1} # printing result print("Symmetric difference of multiple list : " + str(res))
Producción:
La lista original es: [{1, 2, 3, 5, 6}, {2, 3, 5, 7, 8}, {9, 3}, {0, 3, 6, 7}]
Diferencia simétrica de lista múltiple: {8, 1, 9, 0}
Método #2: Usando Counter() + chain.from_iterable() + items()
Similar al método anterior, la única diferencia es que se realiza en un solo paso al extraer claves y valores usando elements().
Python3
# Python3 code to demonstrate working of # Symmetric Difference of Multiple sets # Using Counter() + chain.from_iterable() + items() from collections import Counter from itertools import chain # initializing list test_list = [{5, 3, 2, 6, 1}, {7, 5, 3, 8, 2}, {9, 3}, {0, 3, 6, 7}] # printing original list print("The original list is : " + str(test_list)) # clubbing operations using items() to get items res = {key for key, val in Counter(chain. from_iterable(test_list)). items() if val == 1} # printing result print("Symmetric difference of multiple list : " + str(res))
Producción:
La lista original es: [{1, 2, 3, 5, 6}, {2, 3, 5, 7, 8}, {9, 3}, {0, 3, 6, 7}]
Diferencia simétrica de lista múltiple: {8, 1, 9, 0}
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