Bienvenido sean a este post, hoy veremos dos formas de crear comprensiones por medio de dict y set.
Comprensiones con dict
Este tipo de comprension trabaja de forma similar a la de list que vimos en este post, solo tiene una leve diferencia en su sintaxis, para entender el concepto veamos el siguiente ejemplo:
>>> from string import ascii_lowercase
>>> mapa_letras = dict((l, n) for n, l in enumerate(ascii_lowercase, 1))
>>>
Primero importaremos la constante ascii_lowercase desde el modulo string, luego crearemos un dict llamado mapa_letras, en este caso primero crearemos dos valores para el dict donde l representara a la letra y n a un numero, lo siguiente es un bucle for con los dos valores y despues usaremos enumerate para numerar el contenido de ascii_lowercase y le diremos que comience a contar desde 1.
Nota: ascii_lowercase es una constante que nos devuelve todas las letras del abecedario en minusculas.
Si lo probamos deberemos tener la variable con la siguiente informacion:
>>> mapa_letras
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6, 'g': 7, 'h': 8, 'i': 9, 'j': 10, 'k': 11, 'l': 12, 'm': 13, 'n': 14, 'o': 15, 'p': 16, 'q': 17, 'r': 18, 's': 19, 't': 20, 'u': 21, 'v': 22, 'w': 23, 'x': 24, 'y': 25, 'z': 26}
>>>
Tomemos este ejemplo y cambiemos su sintaxis de la siguiente forma:
>>> mapa_letras = {l: n for n, l in enumerate(ascii_lowercase, 1)}
Como podemos ver hace exactamente lo mismo pero cambio un poco la sintaxis, donde ahora no usamos a dict sino directamente la llave (equivale a esto), despues le pasamos los campos con la sintaxis para un dict y despues el bucle for es exactamente el mismo, vamos a analizar otro ejemplo:
>>> palabra = "Holis"
>>> intercambio = {c: c.swapcase() for c in palabra}
>>>
En este caso usaremos una variable con un texto, despues crearemos un dict llamado intercambio y en este usaremos cada caracter como clave y como valor el caracter pero con el tamaño cambiado por medio de swapcase, para separarlos usamos el bucle for, si lo comprobamos veremos esto:
>>> print(intercambio)
{'H': 'h', 'o': 'O', 'l': 'L', 'i': 'I', 's': 'S'}
>>>
Observen como creo el diccionario y como cambio las mayusculas a minusculas y viceversa, vamos a crear un nuevo ejemplo en base al anterior:
>>> palabra = 'hello'
>>> posiciones = {l: n for n, l in enumerate(palabra)}
>>>
Aca cambiamos el texto para mostrar una conducta del diccionario, si observan se parece al primer ejemplo pero esta vez el enumerate desde 0 pero trabaja como el ejemplo anterior donde asignara una posicion a cada letra del texto, veamos el resultado:
>>> print(posiciones)
{'h': 0, 'e': 1, 'l': 3, 'o': 4}
>>>
Si se fijan tenemos una sola letra l y esta con el valor de 3, esto es debido a que no se pueden repetir claves por lo tanto al volver a usarla la letra como clave simplemente la actualizara y por esta razon solo aparece con el ultimo valor, pasemos a la siguiente comprension.
Comprension con set
Esta comprension es muy similar a las vistas anteriormente con list y dict, dado que se nos permite usar a set o las llaves ({}) para poder crearlas, veamos el siguiente ejemplo:
>>> palabra = 'tinchicus'
>>> letras1 = set(c for c in palabra)
>>> letras2 = {c for c in palabra}
>>>
Vamos a establecer un nuevo texto, luego utilizaremos la palabra set para almacenar una letra o caracter y al lado un bucle para pasar letra de la palabra antes informada, esto nos creara un set con cada letra de palabra, la siguiente linea hace lo mismo pero en lugar de usar set utiliza un conjunto de llaves, vamos a ver como esta compuesto nuestro nuevo set y si es verdad que son iguales:
>>> print(letras2, letras1 == letras2)
{'i', 'n', 'c', 's', 'h', 'u', 't'} True
>>>
Como pueden ver al igual que sucede con diccionario no se permiten elementos duplicados y por lo tanto solamente quedaran una de cada letra, despues hicimos una comparacion que nos devolvio true porque ambas variables almacenan el mismo tipo de dato, como pueden ver es igual a diccionario la sintaxis pero como no tenemos una clave para asociar el valor simplemente debemos pasar este, cuando no necesitemos generar elementos de tipo clave-valor como un diccionario esta es tu mejor opcion.
En resumen, hoy hemos visto dos tipos mas de comprension, el primero fue explicado para crear elemento de tipo dict, su sintaxis y su forma de crearlo, despues vimos lo mismo pero del tipo set, tambien su sintaxis, sus ventajas y su forma de crearlo, espero les haya sido de utilidad 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
