OrderedDict di Python è una sottoclasse di dict che mantiene l’ordine di inserimento degli elementi. Quando iteriamo su un OrderedDict, gli elementi vengono restituiti nell’ordine in cui sono stati inseriti. Un dizionario regolare non tiene traccia dell’ordine di inserimento. Quindi, durante l’iterazione, gli elementi vengono restituiti in un ordine arbitrario. Quando vogliamo assicurarci che gli elementi vengano restituiti nell’ordine in cui sono stati inseriti, possiamo utilizzare OrderedDict.
OrderedDict di Python
- OrderedDict fa parte del modulo collections di Python.
- Possiamo creare un OrderedDict vuoto e aggiungere elementi ad esso. Se creiamo un OrderedDict passando un argomento dict, l’ordine potrebbe essere perso perché dict non mantiene l’ordine di inserimento.
- Se un elemento viene sovrascritto nell’OrderedDict, la sua posizione viene mantenuta.
- Se un elemento viene eliminato e aggiunto nuovamente, viene spostato alla fine.
- Il metodo
popitem
di OrderedDict rimuove gli elementi nell’ordine FIFO. Accetta un argomento booleanolast
, se impostato suTrue
gli elementi vengono restituiti nell’ordine LIFO. - Possiamo spostare un elemento all’inizio o alla fine dell’OrderedDict utilizzando la funzione
move_to_end
. Accetta un argomento booleanolast
, se impostato suFalse
l’elemento viene spostato all’inizio del dizionario ordinato. - Dal Python 3.6 in poi, l’ordine è conservato per gli argomenti di parola chiave passati al costruttore OrderedDict, fare riferimento a PEP-468.
- Possiamo utilizzare la funzione
reversed()
con OrderedDict per iterare sugli elementi nell’ordine inverso. - I test di uguaglianza tra oggetti OrderedDict sono sensibili all’ordine e sono implementati come
list(od1.items())==list(od2.items())
. - I test di uguaglianza tra OrderedDict e altri oggetti Mapping non sono sensibili all’ordine come i dizionari regolari. Ciò consente agli oggetti OrderedDict di essere sostituiti ovunque venga utilizzato un dizionario regolare.
Esempi di OrderedDict di Python
Diamo un’occhiata ad alcuni esempi di codice di OrderedDict di Python.
Creazione di un oggetto OrderedDict
from collections import OrderedDict
# creazione di un dizionario semplice
my_dict = {'kiwi': 4, 'apple': 5, 'cat': 3}
# creazione di un dizionario ordinato vuoto
ordered_dict = OrderedDict()
print(ordered_dict)
# creazione di un dizionario ordinato da un dizionario
ordered_dict = OrderedDict(my_dict)
print(ordered_dict)
Output:
OrderedDict()
OrderedDict([('kiwi', 4), ('apple', 5), ('cat', 3)])
Aggiunta, Sostituzione, Rimozione elementi da OrderedDict
# aggiungere elementi al dizionario
ordered_dict['dog'] = 3
# sostituire un valore di chiave del dizionario
ordered_dict['kiwi'] = 10
print(ordered_dict)
# rimuovere e aggiungere un valore
ordered_dict.pop('kiwi')
print(ordered_dict)
ordered_dict['kiwi'] = 4
print(ordered_dict)
Output:
OrderedDict([('kiwi', 10), ('apple', 5), ('cat', 3), ('dog', 3)])
OrderedDict([('apple', 5), ('cat', 3), ('dog', 3)])
OrderedDict([('apple', 5), ('cat', 3), ('dog', 3), ('kiwi', 4)])
Esempio di move_to_end di OrderedDict
# spostare mela alla fine e cane all'inizio
ordered_dict.move_to_end('apple')
ordered_dict.move_to_end('dog', False)
print(ordered_dict)
Output:
OrderedDict([('dog', 3), ('cat', 3), ('kiwi', 4), ('apple', 5)])
Esempio di popitem di OrderedDict
# estrarre l'ultimo elemento
item = ordered_dict.popitem(True)
print(item)
print(ordered_dict)
Output:
('apple', 5)
OrderedDict([('dog', 3), ('cat', 3), ('kiwi', 4)])
Iterazione inversa di OrderedDict
# iterazione inversa
for item in reversed(ordered_dict):
print(item)
Output:
kiwi
cat
dog
Esempio di test di uguaglianza OrderedDict
# test di uguaglianza
d1 = {'a': 'A', 'b': 'B'}
d2 = {'b': 'B', 'a': 'A'}
od1 = OrderedDict({'a': 'A', 'b': 'B'})
od2 = OrderedDict({'b': 'B', 'a': 'A'})
print(d1 == d2)
print(od1 == od2)
print(d1 == od1)
Output:
True
False
True
Puoi scaricare il codice completo dell’esempio dal nostro Repository GitHub.
Riferimento: Documenti di Python
Source:
https://www.digitalocean.com/community/tutorials/python-ordereddict