Bienvenidos sean a este post, hoy hablaremos sobre esta funcion del modulo de colecciones.
Este es un objeto tipo tuple que posee campos accesibles por busqueda ya que pueden ser indexados e iterables, como es una conjuncion entre un objeto hecho y derecho y un tuple nos resulta muy util en los casos que no necesitamos un objeto personalizado pero necesitas un codigo mas leible y evitando indexaciones absurdas, otro uso util es cuando necesitamos cambiar la posicion despues de una refactorizacion, lo cual obliga al programador a hacer un refactoreo de toda la logica involucrada, pero basta de chacharas y veamos un ejemplo para entender este concepto:
>>> vision = (9.5, 8.8)
Tenemos un oftalmologo que necesita almacenar los valores de vision de sus pacientes, para ello creamos un tuple con dos valores que corresponderian al ojo izquierdo el primer valor, el ojo derecho al segundo valor, de esta forma podemos trabajar con los dos valores por separado, veamos un ejemplo:
>>> vision[0]
9.5
>>> vision[1]
8.8
>>>
Con esto ya tenemos listo nuestro proyecto finalizado pero el doctor necesita un valor combinado de ambas visiones, es decir que ahora necesitamos manejar tres valores: izquierda, combinado, derecha; para lograr esto debemos hacer todo un refactoreo de nuestro codigo para lograr lo mismo ya que debemos hacer que la posicion 1 ahora debe almacenar el valor combinado y el valor de la posicion 1 a una nueva posicion, para evitar todo este exceso de trabajo entra en accion namedtuple, tomemos el caso anterior y vamos a convertirlo en este tipo:
>>> from collections import namedtuple
>>> v = namedtuple('v', ['izquierda', 'derecha'])
>>> vision = v(9.5, 8.8)
>>> vision[0]
9.5
>>> vision.izquierda
9.5
>>> vision.derecha
8.8
>>>
Primero debemos importar a namedtuple del paquete collections, luego crearemos un objeto de tipo namedtuple llamado v, le pasaremos cual sera el objeto en si, nuestro siguiente paso sera asignar las claves que usaremos para los dos valores, en este caso son izquierda y derecha para identificar las visiones, despues usaremos nuevamente a vision para almacenarla por medio de v (namedtuple) y le informamos dos valores, despues podemos ver que podemos recuperar la informacion de la misma forma de antes y sino por las dos claves que pasamos en el namedtuple, con este codigo convertido vamos a ver la pequeña modificacion que debemos hacer para implementar los cambios solicitados:
>>> v = namedtuple('v',['izquierda','combinado','derecha'])
>>> vision = v(9.5, 9.2, 8.8)
>>> vision.izquierda
9.5
>>> vision.derecha
8.8
>>> vision.combinado
9.2
>>>
Modificamos al namedtuple donde simplemente agregaremos un nuevo campo entre los dos anteriores, si lo volvemos a cargar ahora pasaremos los tres datos necesarios, y despues lo verificamos por cada clave creada veremos que sigue funcionando correctamente, y si bien este fue un ejemplo un poco extremo con el tiempo veremos que estas situaciones pueden suceder y necesitemos una aplicacion como esta.
En resumen, hoy hemos visto que es un namedtuple, como se crea, para que nos puede ser utiles, como nos ahorro un monton de trabajo en una modificacion insignificante pero complicada de hacer en el codigo, 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.


Donación
Es para mantenimento del sitio, gracias!
$1.00
