Dada una lista de conjuntos, la tarea es escribir un programa en Python para encontrar conjuntos duplicados.
Entrada: lista_prueba = [{4, 5, 6, 1}, {6, 4, 1, 5}, {1, 3, 4, 3}, {1, 4, 3}, {7, 8, 9} ]
Salida: [conjunto congelado ({1, 4, 5, 6}), conjunto congelado ({1, 3, 4})]
Explicación: {1, 4, 5, 6} es similar a {6, 4, 1, 5}, por lo tanto, parte del resultado.
Entrada: lista_prueba = [{4, 5, 6, 9}, {6, 4, 1, 5}, {1, 3, 4, 3}, {1, 4, 3}, {7, 8, 9} ]
Salida: [conjunto congelado ({1, 3, 4})]
Explicación: {1, 3, 4} ({1, 3, 4, 3}) es similar a {1, 4, 3}, por lo tanto, parte del resultado.
Método #1: Usar Counter() + count() + frozenset() + loop
En esto, todos los conjuntos se codifican convirtiéndolos en frozenset() [para obtener el tipo hashable] en frecuencia usando Counter(). Luego se usa count() para obtener el conteo de todos los conjuntos presentes del contador de frecuencia creado.
Python3
# Python3 code to demonstrate working of # Duplicate sets in list of sets # Using Counter() + count() + frozenset() + loop from collections import Counter # initializing list test_list = [{4, 5, 6, 1}, {6, 4, 1, 5}, {1, 3, 4, 3}, {1, 4, 3}, {7, 8, 9}] # printing original list print("The original list is : " + str(test_list)) # getting frequency using Counter() freqs = Counter(frozenset(sub) for sub in test_list) res = [] for key, val in freqs.items(): # if frequency greater than 1, set is appended # [duplicate] if val > 1 : res.append(key) # printing result print("Duplicate sets list : " + str(res))
Producción:
La lista original es: [{1, 4, 5, 6}, {1, 4, 5, 6}, {1, 3, 4}, {1, 3, 4}, {8, 9, 7}]
Lista de conjuntos duplicados: [congelado ({1, 4, 5, 6}), congelado ({1, 3, 4})]
Método n.° 2: Usar la comprensión de listas + Contador()
En esto, realizamos una tarea similar, con la única diferencia de que la comprensión de la lista se usa como un trazador de líneas para extraer duplicados según el diccionario de frecuencia.
Python3
# Python3 code to demonstrate working of # Duplicate sets in list of sets # Using list comprehension + Counter() from collections import Counter # initializing list test_list = [{4, 5, 6, 1}, {6, 4, 1, 5}, {1, 3, 4, 3}, {1, 4, 3}, {7, 8, 9}] # printing original list print("The original list is : " + str(test_list)) # getting frequency using Counter() freqs = Counter(frozenset(sub) for sub in test_list) # list comprehension provides shorthand solution res = [key for key, val in freqs.items() if val > 1] # printing result print("Duplicate sets list : " + str(res))
Producción:
La lista original es: [{1, 4, 5, 6}, {1, 4, 5, 6}, {1, 3, 4}, {1, 3, 4}, {8, 9, 7}]
Lista de conjuntos duplicados: [congelado ({1, 4, 5, 6}), congelado ({1, 3, 4})]
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