es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Encuentra el conjunto con un elemento específico dentro de un conjunto de conjuntos en Python

Tengo el siguiente conjunto de conjuntos en Python (ningún elemento puede ocurrir más de una vez en cualquier lugar):

set_of_sets = {frozenset({"01", "02", "03"}),
               frozenset({"04", "05", "06"}),
               frozenset({"07", "08"}),
               frozenset({"09", "10"}),
               frozenset({"11"}),
               frozenset({"12"}),
               frozenset({"13"}),
               frozenset({"14"}),
               frozenset({"15"})}

Ahora, quiero saber si algún elemento solicitado está en el conjunto de conjuntos, y si es así, cuál es el conjunto específico (obtener todos los elementos de este conjunto). Hasta el momento, he llegado a esto:

if any("001" in subset for subset in set_of_sets):
   print("Presente:")
else:
   print("No presente")

Pero esto no muestra el conjunto encontrado en sí. Podría optar por esta opción:

for subset in set_of_sets:
    if "01" in subset:
        print(subset)

Pero esto no maneja la posibilidad de no encontrar el elemento en cuestión, y dada la naturaleza de la ocurrencia única de elementos, esta iteración completa sobre los subconjuntos es algo ineficiente (en caso de que encontremos el subconjunto).

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para obtener el conjunto específico que contiene el elemento solicitado sin iterar sobre todos los conjuntos, puedes modificar tu código de la siguiente manera:

    requested_element = "01"
    found_set = None
    for subset in set_of_sets:
        if requested_element in subset:
            found_set = subset
            break
    
    if found_set:
        print("Conjunto encontrado:", found_set)
    else:
        print("No presente")
    

    Este código primero inicializa found_set como None, y luego itera sobre los conjuntos hasta encontrar aquel que contenga el elemento solicitado. Si lo encuentra, establece found_set como ese subconjunto y sale del bucle utilizando break. Si no lo encuentra, found_set sigue siendo None.

    Finalmente, el código verifica si found_set no es None, lo que significa que se encontró el elemento solicitado en uno de los conjuntos, y si es así, muestra por pantalla el conjunto encontrado. De lo contrario, muestra “No presente”. Esto evita iterar innecesariamente sobre todos los conjuntos y devuelve el conjunto específico si se encuentra el elemento solicitado.

Comments are closed.