OrderedDict en Python

Un OrderedDict es una subclase de diccionario que recuerda el orden en que se insertaron las claves por primera vez. La única diferencia entre dict() y OrderedDict() es que:

OrderedDict conserva el orden en que se insertan las claves. Un dictado regular no rastrea el orden de inserción y al iterarlo da los valores en un orden arbitrario. Por el contrario, OrderedDict recuerda el orden en que se insertan los elementos.

Python3

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

Producción: 

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

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

Puntos importantes: 

1. Cambio de valor de clave: si se cambia el valor de una determinada clave, la posición de la clave permanece sin cambios en OrderedDict.

Python3

# A Python program to demonstrate working of key
# value change in OrderedDict
from collections import OrderedDict
 
print("Before:\n")
od = OrderedDict()
od['a'] = 1
od['b'] = 2
od['c'] = 3
od['d'] = 4
for key, value in od.items():
    print(key, value)
 
print("\nAfter:\n")
od['c'] = 5
for key, value in od.items():
    print(key, value)

Producción: 

Before:

a 1
b 2
c 3
d 4

After:

a 1
b 2
c 5
d 4

2. Eliminación y reinserción: Eliminar y volver a insertar la misma clave la empujará hacia atrás como OrderedDict, sin embargo, mantiene el orden de inserción.

Python3

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

Producción: 

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

Otras consideraciones :  

  • El dictado ordenado en la versión 2.7 de Python consume más memoria que el dictado normal. Esto se debe a la implementación subyacente de la lista doblemente enlazada para mantener el orden. En Python 2.7 Ordered Dict no es una subclase de dictado, es un contenedor especializado del módulo de colecciones.
  • A partir de Python 3.7, se garantiza el orden de inserción de los diccionarios de Python.
  • Ordered Dict se puede usar como una pila con la ayuda de la función popitem . Intente implementar el caché LRU con Ordered Dict.

Este artículo es una contribución de Sri Sanketh Uppalapati . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *