Una via quick'n'dirty e di convertire la list in un set
e riconvertirlo in una list
>>> animali = ["gatto", "cane", "pecora", "gatto", "bue", "pecora", "gatto"]
>>> list(set(animali))
['cane', 'pecora', 'gatto', 'bue']
Onestamemente non capisco la domanda: lo statemente with
può essere utilizzato in
quelle situazioni in cui c'è un certo contesto di cui tenere conto.
L'uso che ne faccio io più spesso è quando ho da aprire un file e quindi eseguo
with open('/path/to/file') as f:
do_something_amazing(f)
in questa maniera non mi devo occupare di chiudere il file, neanche in caso di errore.
Il sistema ha due elementi principali
- pagina
- token
considerando che il motore di ricerca necessita solamente di avere il link
con la pagina che contiene il token ricercato e siccome i token sono generalmente ripetuti
attraverso le pagine conviene creare una struttura dati con il token
a cui
sono connesse le pagine in cui esso compare.
Il problema a questo punto rimarrebbe rendere veloce la ricerca attraverso
la struttura dati della parola; sotto questo aspetto una Hash Table, che
ha ricerca in O(1)
(in media) sarebbe la scelta migliore (in questo caso accesso
e ricerca coincidono). Siccome non sono richieste proprietà come
sorting, insertion e deletion penso di poter tralasciare altre
strutture dati.
In questo caso utilizzerei un dizionario con la stringa
rappresentante il numero di pettorale; così si avrebbe
un hash table che come l'esempio sopra un accesso O(1)
.
Considerando che gli oggetti Javascript sono hash table essi stessi
anche l'accesso dovrebbe essere O(1)
(dipende dall'implementazione).
Una scelta possibile è la seguente dove si è preferito
unire tutte le figure come l'impiegato, consulente e responsabile
in un unica tabella (sono distinguibili uno dall'altro a seconda
della presenza di certi campi); eventuali constraint possono essere
implementati a livello software oppure utilizzando
costrutti SQL
adeguati (il codice che segue è del database
PostgreSQL
ma non ho inserito dei controlli siccome non li
conosco perfettamente e il tempo è stretto)
CREATE TABLE impiegati (
id integer PRIMARY KEY,
CF char(16) NOT NULL,
nome char(255) NOT NULL,
dipartimento char(255) NOT NULL,
inquadramento char(255) NOT NULL,
diretto_da_dirigente integer REFERENCES impiegati (id),
is_consulente boolean,
address char(255),
telefono char(255)
);
CREATE TABLE progetti (
pid integer PRIMARY KEY,
nome char(255) NOT NULL,
responsabile integer REFERENCES impiegati (id),
);
CREATE TABLE progetto_dipendenti (
id integer PRIMARY KEY,
impiegato integer REFERENCE impiegati (id),
progetto integer REFERENCE progetti (pid)
);