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).
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:
Este código primero inicializa
found_set
comoNone
, y luego itera sobre los conjuntos hasta encontrar aquel que contenga el elemento solicitado. Si lo encuentra, establecefound_set
como ese subconjunto y sale del bucle utilizandobreak
. Si no lo encuentra,found_set
sigue siendoNone
.Finalmente, el código verifica si
found_set
no esNone
, 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.