logo

OrderedDict en Python

An OrderedDict és una subclasse de diccionari que recorda l'ordre en què es van inserir les claus per primera vegada. L'única diferència entre dictat() i OrderedDict() rau en el seu maneig de l'ordre de les claus Python .

OrderedDict vs dict a Python

`OrderedDict` manté la seqüència en què s'afegeixen les claus, assegurant que l'ordre es conserva durant la iteració. En canvi, un diccionari estàndard no garanteix cap ordre específic quan s'itera, proporcionant valors en una seqüència arbitrària. `OrderedDict` es distingeix per mantenir l'ordre d'inserció original dels elements.



Exemple: En aquest exemple, el codi següent mostra la diferència entre un diccionari normal (`dict`) i un diccionari ordenat (`OrderedDict`). Primer imprimeix els elements en un diccionari normal (`d`) on l'ordre d'inserció no està garantit.

Python
# A Python program to demonstrate working of OrderedDict from collections import OrderedDict print('This is a Dict:
') d = {} d['a'] = 1 d['b'] = 2 d['c'] = 3 d['d'] = 4 for key, value in d.items(): print(key, value) print('
This is an Ordered Dict:
') od = OrderedDict() od['a'] = 1 od['b'] = 2 od['c'] = 3 od['d'] = 4 for key, value in od.items(): print(key, value)>

Sortida:

  This is a Dict:  a 1  b 2 c 3 d 4   This is an Ordered Dict:  a 1 b 2 c 3 d 4>

Diccionari Python ordenat

Hi ha diversos punts importants relacionats amb l'ordenació del diccionari Python aquí, estem discutint alguns punts importants relacionats amb Diccionari Python ordenant els que segueixen.



hashmap java
  1. Canvi de valor clau
  2. Eliminació i reinserció
  3. Comparació d'igualtat
  4. Revocació OrderedDict
  5. OrderedDict Popitem Last
  6. Inserció de claus en posició arbitrària
  7. Mòdul Col·leccions

Canvi del valor clau en l'ordre del diccionari de Python

Si es canvia el valor d'una determinada clau, la posició de la clau no es modifica a OrderedDict. aquest mètode Python demostra el canvi del valor associat a una clau en un OrderedDict.

Exemple: En aquest exemple, el codi Python següent utilitza un OrderedDict per demostrar el canvi del valor associat a una clau específica. Inicialment, crea un OrderedDict amb les claus 'a' a 'd' i els valors respectius de l'1 al 4.

teoria dels autòmats
Python
# A Python program to demonstrate working of key # value change in OrderedDict from collections import OrderedDict print('Before:
') od = OrderedDict() od['a'] = 1 od['b'] = 2 od['c'] = 3 od['d'] = 4 for key, value in od.items(): print(key, value) print('
After:
') od['c'] = 5 for key, value in od.items(): print(key, value)>

Sortida:



  Before:  a 1 b 2 c 3 d 4   After:  a 1 b 2 c 5 d 4>

Comparació d'igualtat en Python Ordre del diccionari

OrderedDicts a Python es pot comparar per igualtat no només en funció del seu contingut, sinó també tenint en compte l'ordre d'inserció. Això és útil quan es comparen dos OrderedDicts tant per a parells clau-valor com per al seu ordre.

Exemple: En aquest exemple, el codi crea dos OrderedDicts, `od1` i `od2`, amb diferents ordres de parells clau-valor. A continuació, demostra que l'ordre d'inserció es considera quan es comparen per igualtat mitjançant l'operador `==`, donant lloc a `False'.

Python
from collections import OrderedDict # Create two ordered dictionaries with different orderings od1 = OrderedDict([('a', 1), ('b', 2), ('c', 3)]) od2 = OrderedDict([('c', 3), ('b', 2), ('a', 1)]) # Compare the ordered dictionaries for equality print(od1 == od2)>

Sortida:

False>

Revocació OrderedDict en Python Dictionary Order

Després de crear un OrderedDict, elreverse>s'aplica el mètode, que inverteix l'ordre dels parells clau-valor. El bucle posterior imprimeix els elements en l'ordre invers, destacant la capacitat de OrderedDict de facilitar les operacions de reversió. OrderedDicts es pot invertir utilitzant elreverse>mètode. Això inverteix l'ordre dels parells clau-valor al diccionari.

preity zinta

Exemple: En aquest exemple, el codi següent utilitza un OrderedDict i inverteix els seus parells clau-valor mitjançant el mètode 'reverse'. El bucle següent imprimeix els elements en ordre invers, donant com a resultat la sortida: `c 3, b 2, a 1`.

Python
from collections import OrderedDict my_dict = OrderedDict([('a', 1), ('b', 2), ('c', 3)]) my_dict.reverse() for key, value in my_dict.items(): print(key, value)>

Sortida:

 c 3, b 2, a 1>

OrderedDict Popitem() i Ordre del diccionari Python

El popitem()>mètode a OrderedDict es pot utilitzar amb ellast>paràmetre per eliminar i retornar l'últim parell clau-valor inserit. Això és útil quan voleu processar articles de la manera de l'últim en entrar, primer en sortir. L'ús de `popitem(last=True)` en un OrderedDict eliminaria i retornaria l'element afegit més recentment, proporcionant flexibilitat en la gestió de l'ordre dels elements.

Exemple: En aquest exemple, el codi següent utilitza un OrderedDict i aplica el mètode `popitem` amb `last=True` per eliminar i emmagatzemar l'últim parell clau-valor inserit. A continuació, imprimeix l'element eliminat, donant com a resultat la sortida: `('c', 3)`.

Python
from collections import OrderedDict my_dict = OrderedDict([('a', 1), ('b', 2), ('c', 3)]) last_item = my_dict.popitem(last=True) print(last_item)>

Sortida:

vora css
('c', 3)>

Inserció de claus en posició arbitrària en Diccionari Python ordenat

OrderedDict permet inserir una nova clau en una posició específica mitjançant l'move_to_end>imove_to_start>mètodes. Aquesta flexibilitat permet la reordenació dinàmica de les claus en funció de l'ús o la prioritat .

Exemple: En aquest exemple, el codi Python següent utilitza un OrderedDict per crear un diccionari amb parells clau-valor ordenats. A continuació, utilitza el mètode 'move_to_end' per reposicionar la tecla 'a' al final i la tecla 'b' al principi.

Python
from collections import OrderedDict my_dict = OrderedDict([('a', 1), ('b', 2), ('c', 3)]) # Move key 'a' to the end my_dict.move_to_end('a') # Move key 'b' to the beginning my_dict.move_to_end('b', last=False) for key, value in my_dict.items(): print(key, value)>

Sortida:

b 2, c 3, a 1>

Esborrar i tornar a inserir Diccionari Python ordenat

Si suprimiu i torneu a inserir la mateixa clau, l'empenyrà cap al darrere, ja que OrderedDict manté l'ordre d'inserció. Aquest mètode mostra les operacions de supressió i reinserció en un Python OrderedDict. Inicialment, omple l'OrderedDict amb parells clau-valor, elimina una entrada, imprimeix l'OrderedDict actualitzat i, posteriorment, torna a inserir l'entrada suprimida, demostrant la naturalesa ordenada del diccionari.

Exemple: En aquest exemple, el codi Python següent mostra la supressió, la reinserció i la impressió d'elements en un OrderedDict. Primer imprimeix els elements OrderedDict, després elimina l'entrada amb la clau 'c', imprimeix l'OrderedDict actualitzat i, finalment, torna a inserir 'c' amb el seu valor, imprimint de nou el OrderedDict.

com actualitzar en java
Python
# A Python program to demonstrate working of deletion # re-insertion in OrderedDict from collections import OrderedDict print('Before deleting:
') od = OrderedDict() od['a'] = 1 od['b'] = 2 od['c'] = 3 od['d'] = 4 for key, value in od.items(): print(key, value) print('
After deleting:
') od.pop('c') for key, value in od.items(): print(key, value) print('
After re-inserting:
') od['c'] = 3 for key, value in od.items(): print(key, value)>

Sortida:

  Before deleting:  a 1 b 2 c 3 d 4   After deleting:  a 1 b 2 d 4   After re-inserting:  a 1 b 2 d 4 c 3>

Mòdul de col·leccions en Python Ordre del diccionari

OrderedDict forma part de mòdul de col·leccions en Python. Proporciona tots els mètodes i funcionalitats d'un diccionari normal, així com alguns mètodes addicionals que aprofiten l'ordenació dels elements. Aquests són alguns exemples d'ús de OrderedDict a Python:

Exemple: En aquest exemple, el codi següent utilitza un OrderedDict per crear un diccionari amb parells clau-valor ordenats. Afegeix un nou element 'd' al final i insereix els elements 'e' i 'f' al principi, amb 'e' que es mou al davant. El bucle final imprimeix els elements del diccionari en l'ordre en què s'han afegit.

Python
from collections import OrderedDict # Create an ordered dictionary of key-value pairs my_dict = OrderedDict([('a', 1), ('b', 2), ('c', 3)]) # Add a new item to the end of the dictionary my_dict['d'] = 4 # Add a new item at a specific position in the dictionary # my_dict.update({'e': 5, 'f': 6}) or below my_dict.update([('e', 5), ('f', 6)]) my_dict.move_to_end('e', last=False) # Iterate over the dictionary in the order in which items were added for key, value in my_dict.items(): print(key, value)>

Sortida:

e 5 a 1 b 2 c 3 d 4 f 6>

Complexitat temporal:

  • Obteniu l'element (clau): O(1)
  • Definir element (clau, valor): O(1)
  • Suprimeix l'element (clau): O(n)
  • Iteració: O(n)

Complexitat espacial: O(n)

OrderedDict és una subclasse de diccionari en Python que recorda l'ordre en què s'han afegit els elements. En un diccionari normal de Python, l'ordre dels elements no està garantit i pot canviar entre diferents execucions del programa o diferents versions de Python. Tanmateix, un OrderedDict conserva l'ordre dels elements tal com es van afegir, fins i tot si s'afegeixen nous elements posteriorment o es canvien els elements existents.

Altres consideracions

  • El dictat ordenat a la versió 2.7 de Python consumeix més memòria que el dictat normal. Això es deu a la implementació subjacent de la llista doblement enllaçada per mantenir l'ordre. A Python 2.7 Ordered Dict no és una subclasse dict, és un contenidor especialitzat del mòdul de col·leccions.
  • A partir de Python 3.7, l'ordre d'inserció dels diccionaris de Python està garantit.
  • Ordered Dict es pot utilitzar com a pila amb l'ajuda de jo bec funció. Proveu d'implementar la memòria cau LRU amb Ordered Dict.