Imagine que você tem muitos clientes de diferentes cidades ao redor do mundo. Você mantém um registro das cidades deles e tem uma lista das cidades de onde seus clientes vêm. Essa lista pode ser assim: ['San Francisco', 'New York', 'Yerevan', 'New York', 'Tel Aviv', ...].
Você percebeu que há alguns clientes da mesma cidade como New York. Você gostaria de saber quais são as cidades únicas das quais você teve clientes.
Um set é uma coleção não ordenada sem elementos duplicados. Ele ajuda a manter o controle dos elementos únicos e não tem uma ordem particular. É apenas uma coleção de elementos semelhante a uma lista ou tupla, mas sem ordem e que garante a unicidade dos elementos.
Podemos verificar se um item está no set com o 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
É muito mais rápido verificar se um determinado elemento está presente em um set em comparação a verificá-lo em uma list. Isso se deve à natureza do set como uma estrutura de dados. Para listas, o Python precisa comparar os elementos um por um, do primeiro ao último, e retornar True se estiver presente e False caso contrário. Portanto, ele percorre toda a lista elemento por elemento para fazer a verificação. Em contraste, a estrutura de um set permite realizar essa verificação com muito menos operações.
Desafio
Você está ajudando uma mercearia a gerenciar seu inventário. Para cada produto, eles anotaram o nome da empresa que entrega aquele produto. Eles gostariam de enviar uma mensagem para essas empresas informando quanto de seus produtos irão precisar no próximo mês. No entanto, algumas empresas fornecem vários produtos, então a loja não quer enviar várias mensagens para a mesma empresa. Em vez disso, eles desejam obter a lista de empresas com as quais trabalham para que possam enviar a mensagem a elas posteriormente. Eles pedem que você escreva um programa para imprimir todos os nomes das empresas com as quais eles são parceiros.
A primeira linha da entrada contém um único inteiro n - o número de produtos. As próximas n linhas contêm o nome da empresa para cada produto.
O programa deve imprimir os nomes únicos das empresas com as quais a loja é parceira, cada um em uma linha separada.