set

Immagina di avere molti clienti provenienti da diverse città in tutto il mondo. Tieni traccia delle loro città e hai una lista delle città da cui provengono i tuoi clienti. Questa lista potrebbe essere simile a questa: ['San Francisco', 'New York', 'Yerevan', 'New York', 'Tel Aviv', ...].
Hai notato che ci sono alcuni clienti provenienti dalla stessa città come New York. Vorresti sapere quali sono le città uniche da cui hai avuto clienti.
Questo è facile da fare con un set in Python:
cities = ['San Francisco', 'New York', 'Yerevan', 'New York', 'Tel Aviv', 
          'San Diego', 'San Francisco', 'Yerevan']
uniques = set(cities)
print(uniques)
# {'San Diego', 'Yerevan', 'San Francisco', 'New York', 'Tel Aviv'}

print(len(cities))     # 8
print(len(uniques))    # 5
Un set è una collezione non ordinata senza elementi duplicati. Aiuta a tenere traccia degli elementi unici e non ha un ordine particolare. È semplicemente una raccolta di elementi simile a una lista o una tupla ma senza ordine e garantisce l'unicità degli elementi.
 
Possiamo verificare se un elemento è presente nel set con l'operatore 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
È molto più veloce controllare se un certo elemento è presente in un set rispetto a controllarlo in una list. Questo è dovuto alla natura del set come struttura dati. Per le liste, Python deve confrontare gli elementi uno per uno dal primo all'ultimo elemento e restituire True se è presente e False altrimenti. Quindi, itera attraverso l'intera lista elemento per elemento per effettuare il controllo. Al contrario, la struttura di un set permette di fare questo controllo con molte meno operazioni.

Sfida

Stai aiutando un negozio di alimentari a gestire il suo inventario. Per ogni prodotto, hanno annotato il nome dell'azienda che consegna quel prodotto. Vorrebbero inviare un messaggio a quelle aziende per comunicare di quanti dei loro prodotti avranno bisogno nel prossimo mese. Tuttavia, alcune aziende consegnano diversi prodotti, quindi il negozio non vorrebbe inviare diversi messaggi alla stessa azienda. Invece, vorrebbero ottenere la lista delle aziende con cui collaborano in modo da inviare loro il messaggio in seguito. Ti chiedono di scrivere un programma che stampi tutti i nomi delle aziende con cui il negozio collabora.
La prima linea dell'input contiene un singolo intero n - il numero di prodotti. Le successive n linee contengono il nome dell'azienda per ogni prodotto.
Il programma dovrebbe stampare i nomi unici delle aziende con cui il negozio collabora, ciascuno su una linea separata.
Input
Output
5 Nestle Mars Nestle Coca Cola Nestle
Nestle Mars Coca Cola

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue