Anuncios

Bienvenidos sean a este post, hoy hablaremos sobre este funcion del modulo de colecciones.

Anuncios

Este tipo de dato es similar al diccionario (dict) pero a diferencia de este lleva un control de como se ingresaron los valores al mismo, esto nos es util cuando necesitamos recuperar la informacion por medio de una iteracion, para entender el concepto debemos trabajar con un ejemplo, vamos a crear un diccionario:

>>> d = {}
>>> d['a'] = 1
>>> d['b'] = 2
>>> d['c'] = 3
>>> d['d'] = 4
>>>
Anuncios

Este es un diccionario que almacena cuatro valores, vamos a recuperar los datos de la siguiente manera:

>>> for objeto in d.items():
...     print(objeto)
... 
('a', 1)
('c', 3)
('b', 2)
('d', 4)
>>>
Anuncios

El bucle for es algo que veremos mas adelante pero basicamente sera para pasar por todos los objetos que posea el diccionario y lo mostraremos en pantalla, como pueden ver esto nos genero una devolucion con un orden incorrecto, para solucionar usaremos lo siguiente:

>>> from collections import OrderedDict
>>> od = {}
>>> od['a'] = 1
>>> od['b'] = 2
>>> od['c'] = 3
>>> od['d'] = 4
>>>
Anuncios

Como siempre primero importamos el tipo de dato, luego creamos un nuevo diccionario que llamaremos od, y le agregaremos los cuatro datos, volvamos a utilizar el bucle anterior:

>>> for objeto in od.items():
...     print(objeto)
... 
('a', 1)
('b', 2)
('c', 3)
('d', 4)
>>>
Anuncios

Como pueden ver con este tipo de dato nos garantizamos que la informacion salga ordenada correctamente para evitar estos inconvenientes pero esto tambien se observa cuando actualicemos, borremos o agreguemos informacion, veamos un ejemplo de actualizacion:

>>> od['c'] = 11
>>> for objeto in od.items():
...     print(objeto)
... 
('a', 1)
('b', 2)
('c', 11)
('d', 4)
>>>
Anuncios

En este caso luego de actualizar el campo, este se modifico en el diccionario sin alterar el orden, veamos que sucede cuando eliminanos un dato:

>>> od.pop('b')
2
>>> for objeto in od.items():
...     print(objeto)
... 
('a', 1)
('c', 11)
('d', 4)
>>>
Anuncios

Por medio de pop eliminamos el valor de la clave b, si lo mostramos veremos que desaparecio ahora volvamos a insertarlo:

>>> od['b'] = 13
>>> for objeto in od.items():
...     print(objeto)
... 
('a', 1)
('c', 11)
('d', 4)
('b', 13)
>>>
Anuncios

Como lo ingresamos a lo ultimo este aparecera al final de los objetos, esto es debido a que recuerda en el orden que fueron ingresados no por el orden de sus claves o valores, si llegaron hasta aca los felicito pero este tipo de dato quedo obsoleto a partir de la version 3.7 porque ahora dict nos garantiza que siempre se almacena el orden de como fueron ingresado los elementos al diccionario pero si utilizan versiones anteriores o codigos de versiones anteriores y necesita esta conducta para su devolucion es completamente necesario que usen este tipo de dato en lugar del diccionario ordinario.

Anuncios

En resumen, hoy hemos visto a OrderedDict, una sub clase derivada de dict, similar en todos sus aspectos pero con la salvedad de poder almacenar el orden de como fueron ingresados los datos, recuerden tambien que a partir de la version 3.7 ya quedo obsoleto porque dict almacena este dato tambien, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios
pp258

Donación

Es para mantenimento del sitio, gracias!

$1.00