Un dizionario rappresenta una collezione "non ordinata" di oggetti.
Gli oggetti sono identificati univocamente da una chiave (generalmente una stringa) invece che mediante un indice numerico, come avviene nelle liste.
Ogni elemento del dizionario è rappresentato da una coppia (chiave : valore), la chiave serve per accedere all'elemento e recuperare il valore.
Esattamente ciò che avviene quando si cerca una parola sul vocabolario, in tal caso il valore che si cerca è una frase che spiega il significato della chiave.
In analogia alle liste, anche per i dizionari python lascia la possibilità di inserire oggetti eterogenei
nella stesso dizionario.
Di seguito elenco una serie di esempi che illustrano le caratteristiche dei dizionari
e gli operatori ad essi associati. Questa volta voglio utilizzare un esempio più reale, quindi
costruisco un dizionario che associa ad ogni nome di persona il voto
preso in un ipotetico esame universitario di python.
È possibile conoscere il numero di elementi di un dizionario mediante la funzione len(x):
Esiste un elemento particolare che rappresenta il dizionario vuoto ({}):
>>> diz2 = {}
>>> len(diz2)
0
È possibile controllare l'esistenza di una chiave nel dizionario mediante la funzione has_key(x). Il risultato di tale funzione è booleano (1=vero, 0=falso).
Infine per cancellare il più secchione della classe:
>>> del diz1['simone']
>>> diz1
{'stefano':23,'elena':19,'enrico':25,'pierino':18}
Secondo me questa struttura rappresenta il migliore strumento di python. I dizionari sono semplici da utilizzare, efficienti e molto flessibili,
soprattutto sono utili per chi gestisce dati in strutture relazionali. Infatti combinando
opportunamente liste e dizionari è possibile creare un vero e proprio database relazionale.
Per fare un esempio si potrebbe creare il database dei voti universitari nel seguente modo:
>>>> db = []
>>>> db.append({'esame':'guida a python','nome':'stefano','voto':23})
>>>> db.append({'esame':'guida a python','nome':'elena','voto':19})
>>>> db.append({'esame':'progr. ad oggetti','nome':'stefano','voto':28})
>>>> db.append({'esame':'guida a python','nome':'enrico','voto':18})
Questa è una tabella di 4 record composti da 3 campi ognuno. I 3 campi sono stati chiamati rispettivamente esame, nome e voto.
Ogni record è rappresentato da un elemento della lista "db", la quale rappresenta l'intero database.
Internamente i dizionari sono implementati mediante una tabella hash,
quindi l'individuazione di un elemento in base alla chiave è estremamente veloce.
Dopo anni di lavoro con diversi linguaggi di programmazione, io ho maturato la convinzione di non poter fare a meno di una
struttura dati come i dizionari. Io ho lavorato diversi anni con Microsoft Visual C++, con la libreria ad oggetti MFC (Microsoft Foundation class),
e di conseguenza ho spesso utilizzato le mappe. Le mappe di MFC sono identiche ai dizionari di python, ma essendo implementate come libreria esterna al linguaggio
sono incredibilmente lente e macchinose.
In questo caso, essendo i dizionari gia' integrati nell'interprete, Python riesce a fornire uno strumento leggero e potentissimo.