5.3 Diccionarios
Podemos trasladar el concepto de diccionario de la vida real al de diccionario en Python. Al fin y al cabo un diccionario es un objeto que contiene palabras, y cada palabra tiene asociado un significado. Haciendo el paralelismo, diríamos que en Python un diccionario es también un objeto indexado por claves (las palabras) que tienen asociados unos valores (los significados).1
Los diccionarios en Python tienen las siguientes características:
- Mantienen el orden en el que se insertan las claves.
- Son mutables, con lo que admiten añadir, borrar y modificar sus elementos.
- Las claves deben ser únicas. A menudo se utilizan las cadenas de texto como claves, pero en realidad podría ser cualquier tipo de datos inmutable: enteros, flotantes, tuplas (entre otros).
- Tienen un acceso muy rápido a sus elementos, debido a la forma en la que están implementados internamente.
Figura 6: Analogía de un diccionario en Python
Para crear un diccionario usamos llaves {} rodeando asignaciones clave: valor que están separadas por comas. Veamos algunos ejemplos de diccionarios:
En el código anterior podemos observar la creación de un diccionario vacío, otro donde sus claves y sus valores son cadenas de texto y otro donde las claves y los valores son valores enteros.
Ejecución paso a paso a través de Python Tutor:
https://cutt.ly/Sfav2Yw
Ejercicio
Cree un diccionario con los nombres de 5 personas de su familia y sus edades.
Para convertir otros tipos de datos en un diccionario podemos usar la función dict():
Diccionario vacío
Existe una manera particular de usar dict() y es no pasarle ningún argumento. En este caso estaremos queriendo convertir el «vacío» en un diccionario, con lo que obtendremos un diccionario vacío:
Truco: Para crear un diccionario vacío, se suele recomendar el uso de {} frente a dict(), no sólo por ser más pitónico sino por tener (en promedio) un mejor rendimiento en tiempos de ejecución.
Creación con dict()
También es posible utilizar la función dict() para crear dicionarios y no tener que utilizar llaves y comillas:
Supongamos que queremos transformar la siguiente tabla en un diccionario:
Utilizando la construcción mediante dict podemos pasar clave y valor como argumentos de la función:
El inconveniente que tiene esta aproximación es que las claves deben ser identificadores válidos en Python. Por ejemplo, no se permiten espacios:
Nivel intermedio
Es posible crear un diccionario especificando sus claves y un único valor de «relleno»: