Programa de Python para encontrar conjuntos duplicados en la lista de conjuntos

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *