
I dizionari ordinati in Python
Un dizionario ordinato in Python è un dizionario che conserva l'ordine degli elementi inseriti. E' una istanza della classe OrderedDict, una sottoclasse del dizionario standard.
OrderedDict()
Questo strumento non solo memorizza informazioni come un normale dizionario, ma tiene anche traccia del momento esatto della loro aggiunta.
In questo modo puoi visualizzare gli elementi del dizionario in ordine cronologico di inserimento.
A cosa serve? Un dizionario ordinato in Python è molto utile nelle situazioni in cui l'ordine degli elementi è di fondamentale importanza. Mentre i dizionari standard non garantiscono la conservazione dell'ordine di inserimento degli elementi, i dizionari ordinati mantengono scrupolosamente l'ordine in cui gli elementi sono stati aggiunti. Questa caratteristica distintiva dei dizionari ordinati è diventata una parte integrante di Python a partire dalla versione 3.7.
Per comprendere i dizionari ordinati in Python, facciamo ricorso a un esempio pratico.
Immagina di avere una lista della spesa, dove l'ordine degli articoli è fondamentale perché riflette la priorità o la sequenza in cui vuoi acquistare gli oggetti.
- 5 mele
- 2 confezioni di pane
- 1 busta di latte
In Python, un modo efficace per rappresentare questa sequenza, mantenendo l'ordine degli elementi, è utilizzare un "dizionario ordinato" o OrderedDict.
Prima di tutto, devi importare OrderedDict dal modulo collections.
from collections import OrderedDict
Poi puoi creare un OrderedDict proprio come un dizionario normale.
lista_della_spesa = OrderedDict()
Una volta creato, puoi aggiungere elementi, chiavi e valori, al suo interno.
Ad esempio, aggiungi queste coppie di chiavi-valori.
lista_della_spesa['mele'] = 5
lista_della_spesa['pane'] = 2
lista_della_spesa['latte'] = 1
Gli elementi (mele, pane, latte) sono memorizzati nell'ordine esatto in cui sono stati aggiunti.
Se ora provi a iterare il contenuto del dizionario, Python mantiene l'ordine di inserimento.
- for articolo, quantità in lista_della_spesa.items():
- print(f"{articolo}: {quantità}")
L'ordine in cui aggiungi gli elementi è stato preservato.
mele: 5
pane: 2
latte: 1
E per modificare l'ordine?
Se vuoi cambiare l'ordine degli elementi, è necessario rimuovere e reinserire l'elemento.
Ad esempio, cancella la chiave "mele" con l'istruzione del.
del lista_della_spesa['mele']
Ora nella lista ci sono solo due elementi
pane: 2
latte: 1
Adesso inserisci di nuovo la chiave "mele" nel dizionario ordinato.
lista_della_spesa['mele'] = 5
La voce viene posizionata in coda all'interno del dizionario
pane: 2
latte: 1
mele: 5
In alternativa, puoi ottenere lo stesso risultato usando il metodo move_to_end() che ti permette di spostare un elemento in ultima o in prima posizione nel dizionario.
Si tratta di un metodo specifico dei dizionari ordinati.
lista_della_spesa.move_to_end('mele')
Ricorda che, a differenza dei dizionari normali, due OrderedDict sono considerati uguali solo se hanno sia lo stesso ordine che lo stesso contenuto.
Un dizionario ordinato ha tutti i metodi dei dizionari standard e in più qualche metodo specifico che puoi usare solo sui dizionari ordinati.
Fa eccezione il metodo popitem() che restituisce e rimuove l'ultimo o il primo elemento del dizionario ordinato.
lista_della_spesa.popitem()
In un dizionario standard, invece, il metodo popitem() restituisce e rimuove una coppia chiave-valore.
In sintesi, OrderedDict è uno strumento efficace quando l'ordine degli elementi nel dizionario è importante e desideri mantenere questa sequenza in modo esplicito e chiaro.