Imagina que tienes muchos clientes de diferentes ciudades de todo el mundo. Llevas un registro de sus ciudades y tienes una lista de ciudades de donde provienen tus clientes. Esa lista podría ser así: ['San Francisco', 'New York', 'Yerevan', 'New York', 'Tel Aviv', ...].
Has notado que hay algunos clientes de la misma ciudad como New York. Te gustaría saber cuáles son las ciudades únicas de las que has tenido clientes.
Un set es una colección desordenada sin elementos duplicados. Ayuda a mantener un registro de los elementos únicos y no tiene un orden particular. Es simplemente una colección de elementos similar a una lista o una tupla pero sin orden y que garantiza la unicidad de los elementos.
Podemos verificar si un elemento está en el set con el operador in:
print('San Francisco' in uniques) # True
print('Tel Aviv' in uniques) # True
print('London' in uniques) # False
print('Amsterdam' in uniques) # False
print(3 in uniques) # False
Es mucho más rápido verificar si un cierto elemento está presente en un set comparado con verificarlo en una list. Esto se debe a la naturaleza del set como estructura de datos. Para las listas, Python necesita comparar los elementos uno por uno desde el primer elemento de la lista hasta el último y devolver True si estaba presente y False si no. Así que itera a través de toda la lista elemento por elemento para hacer la verificación. En contraste, la estructura de un set permite hacer esta comprobación con muchas menos operaciones.
Desafío
Estás ayudando a una tienda de comestibles a gestionar su inventario. Para cada producto, han anotado el nombre de la empresa que entrega ese producto. Les gustaría enviar un mensaje a esas empresas indicándoles cuánto de sus productos necesitarán en el próximo mes. Sin embargo, algunas empresas entregan varios productos, por lo que la tienda no quisiera enviar varios mensajes a la misma empresa. En su lugar, les gustaría obtener la lista de las empresas con las que trabajan para poder enviarles el mensaje posteriormente. Te piden que escribas un programa que imprima todos los nombres de las empresas con las que colaboran.
La primera línea de entrada contiene un solo entero n - el número de productos. Las siguientes n líneas contienen el nombre de la empresa para cada producto.
El programa debe mostrar los nombres únicos de las empresas con las que la tienda colabora, cada uno en una línea separada.