Métodos del diccionario ordenado en Python

Un OrderedDict es un dictado que recuerda el orden en que se insertaron las claves por primera vez. Si una nueva entrada sobrescribe una entrada existente, la posición de inserción original no se modifica. Eliminar una entrada y volver a insertarla la moverá hasta el final. El diccionario ordenado de alguna manera se puede usar en el lugar donde se usa el mapa hash y la cola. Tiene características de ambos en uno. Al igual que la cola, recuerda el orden y también permite la inserción y eliminación en ambos extremos. Y como un diccionario, también se comporta como un mapa hash. 

Nota: Desde Python 3.6 en adelante, el orden se conserva para los argumentos de palabras clave pasados ​​al constructor OrderedDict, consulte PEP-468. 

Métodos de Diccionario ordenado

Veamos varios métodos que ofrece el diccionario ordenado. 

  • elemento pop():

Este método se utiliza para eliminar una clave desde el principio.

Sintaxis:

popitem(last = True)                      

Si el último es Falso, este método eliminaría una clave del principio del diccionario. Esto sirve como FIFO (primero en entrar, primero en salir) en la cola; de lo contrario, el método eliminaría la clave del final del diccionario.

Complejidad Temporal: O(1).

Para una mejor comprensión, eche un vistazo al código.

Python3

from collections import OrderedDict
 
 
ord_dict = OrderedDict().fromkeys('GeeksForGeeks')
print("Original Dictionary")
print(ord_dict)
 
# Pop the key from last
ord_dict.popitem()
print("\nAfter Deleting Last item :")
print(ord_dict)
 
# Pop the key from beginning
ord_dict.popitem(last = False)
print("\nAfter Deleting Key from Beginning :")
print(ord_dict)

Producción:

Diccionario original 
OrderedDict([(‘G’, Ninguno), (‘e’, Ninguno), (‘k’, Ninguno), (‘s’, Ninguno), (‘F’, Ninguno), (‘o’, Ninguno), (‘r’, Ninguno)])
Después de eliminar el último elemento: 
OrderedDict([(‘G’, Ninguno), (‘e’, Ninguno), (‘k’, Ninguno), (‘s’, Ninguno ), (‘F’, Ninguno), (‘o’, Ninguno)])
Después de eliminar la clave desde el principio: 
OrderedDict([(‘e’, Ninguno), (‘k’, Ninguno), (‘s’, Ninguno ), (‘F’, Ninguno), (‘o’, Ninguno)])

  • move_to_end():

Este método se utiliza para mover una clave existente del diccionario al final o al principio. Hay dos versiones de esta función: 

Sintaxis:

move_to_end(key, last = True)

Si el último es verdadero, este método movería una clave existente del diccionario al final; de lo contrario, movería una clave existente del diccionario al principio. Si la clave se mueve al principio, entonces sirve como FIFO (primero en entrar, primero en salir) en una cola.

Complejidad de tiempo: O(1) 

Python3

from collections import OrderedDict
 
 
ord_dict = OrderedDict().fromkeys('GeeksForGeeks')
print("Original Dictionary")
print(ord_dict)
 
# Move the key to  end
ord_dict.move_to_end('G')
print("\nAfter moving key 'G' to end of dictionary :")
print(ord_dict)
 
# Move the key to beginning
ord_dict.move_to_end('k', last = False)
print("\nAfter moving Key in the Beginning :")
print(ord_dict)

Producción:

Diccionario original 
OrderedDict([(‘G’, Ninguno), (‘e’, Ninguno), (‘k’, Ninguno), (‘s’, Ninguno), (‘F’, Ninguno), (‘o’, Ninguno), (‘r’, Ninguno)])
Después de mover la tecla ‘G’ al final del diccionario: 
OrderedDict([(‘e’, Ninguno), (‘k’, Ninguno), (‘s’, Ninguno), (‘F’, Ninguno), (‘o’, Ninguno), (‘r’, Ninguno), (‘G’, Ninguno)])
Después de mover la tecla al principio: 
OrderedDict([(‘k’, Ninguno) , (‘e’, Ninguno), (‘s’, Ninguno), (‘F’, Ninguno), (‘o’, Ninguno), (‘r’, Ninguno), (‘G’, Ninguno)])

Funcionamiento de la función move_to_end()

Básicamente, este método busca un enlace en una lista enlazada en un diccionario self.__map y actualiza los punteros anterior y siguiente para el enlace y sus vecinos. Elimina ese elemento de su posición y lo agrega al final o al principio según el valor del parámetro. Dado que todas las operaciones a continuación toman un tiempo constante, la complejidad de OrderedDict.move_to_end()  también es constante. 

Publicación traducida automáticamente

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