Diccionario regular vs Diccionario ordenado en Python

Dictionary en Python es una colección desordenada de valores de datos, que se utiliza para almacenar valores de datos como un mapa, que a diferencia de otros tipos de datos que contienen solo un valor único como elemento, Dictionary contiene un par clave: valor. El valor-clave se proporciona en el diccionario para hacerlo más optimizado. Un tipo de diccionario regular no rastrea el orden de inserción de los pares (clave, valor) y, por lo tanto, itera a través de las claves en función de cómo se almacenan en la tabla hash que, a su vez, se basa en valores aleatorios para reducir las colisiones.
En contraste con esto, Python proporciona el OrderedDicttipo que recuerda el orden de inserción de los pares (clave, valor) en el diccionario y, por lo tanto, conserva el orden. OrderedDict consume más memoria que un diccionario normal en Python debido a la implementación subyacente de Doubly LinkedList para preservar el orden.

Ejemplo:

Python

# A Python program to demonstrate
# the difference between regular
# and ordered dictionary.
 
 
import collections
  
 
# Creating a regular dictionary
print('Regular dictionary:')
d = {chr(k):k for k in range(ord('a'), ord('g'))}
  
for k, v in d.items():
    print(k, v)
  
# Creating an Ordered dictionary
print('\nOrderedDict:')
d = collections.OrderedDict()
[d.setdefault(chr(k), k) for k in range(ord('a'), ord('g'))]
  
for k, v in d.items():
    print(k, v)

Producción :

Regular dictionary:
('a', 97)
('c', 99)
('b', 98)
('e', 101)
('d', 100)
('f', 102)

OrderedDict:
('a', 97)
('b', 98)
('c', 99)
('d', 100)
('e', 101)
('f', 102)

Nota: A partir de Python 3.7, se garantiza el orden de inserción de los diccionarios de Python.

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.

Ejemplo: 

Python

# A Python program to demonstrate
# working of deletion and re-insertion in
# regular and OrderedDict
 
 
from collections import OrderedDict
   
print("Before deleting:\n")
 
d = {}
print("Regular dictionary:")
d['a'] = 1
d['b'] = 2
d['c'] = 3
d['d'] = 4
for key, value in d.items():
    print(key, value)
     
od = OrderedDict()
print("\nOrdered dictionary:")
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")
 
 
print("Regular dictionary:")
d.pop('c')
for key, value in d.items():
    print(key, value)
     
print("\nOrdered dictionary:")
od.pop('c')
for key, value in od.items():
    print(key, value)
   
   
print("\nAfter re-inserting:\n")
 
 
print("Regular dictionary:")
d['c'] = 3
for key, value in d.items():
    print(key, value)
     
print("\nOrdered dictionary:")
od['c'] = 3
for key, value in od.items():
    print(key, value)

Producción:

Before deleting:

Regular dictionary:
('a', 1)
('c', 3)
('b', 2)
('d', 4)

Ordered dictionary:
('a', 1)
('b', 2)
('c', 3)
('d', 4)

After deleting:

Regular dictionary:
('a', 1)
('b', 2)
('d', 4)

Ordered dictionary:
('a', 1)
('b', 2)
('d', 4)

After re-inserting:

Regular dictionary:
('a', 1)
('c', 3)
('b', 2)
('d', 4)

Ordered dictionary:
('a', 1)
('b', 2)
('d', 4)
('c', 3)

Publicación traducida automáticamente

Artículo escrito por AlapanKar 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 *