Contenido del capítulo

En este capítulo se explica lo que son los diccionarios de Python y como puedes utilizarlos de forma básica.

Duración estimada de todo el contenido:
Duración del vídeo:
Contiene 6 ejercicios de Python para resolver. Contiene 2 vídeos.
Tabla de contenidos
Logo

    ¿Qué son los diccionarios de Python?

    Introducción a los diccionarios de Python
    Introducción a los diccionarios de Python

    Los diccionarios son estructuras de datos más complejas que las listas, tuplas o conjuntos, ya que están compuestos por pares de clave-valor que permiten almacenar información de forma más ordenada.

    Espacio publicitario

    Sintaxis de un diccionario

    Aquí puedes ver la sintaxis de un diccionario:

    {clave1: valor1, clave2: valor2, clave3: valor3, ...}

    El diccionario se declara haciendo uso de unas llaves ({ }) que envuelven todo el conjunto de datos.

    Lo que encontramos dentro, es una serie de pares clave-valor separados por comas.

    Las claves deben ser únicas y de tipo inmutable (como cadenas de texto o números), mientras que los valores pueden ser de cualquier tipo y mutables. Además, si la clave tiene un tipo de dato concreto, el valor no tiene por qué ser el mismo.

    Es posible tener tantos conjuntos clave-valor como queramos.

    Un diccionario, en cierto modo, es como un conjunto de variables.

    Claves y valores, se dice en inglés keys y values, respectivamente.

    Aquí tienes una variable normal con un valor:

    nombre = "Enrique"

    Un par clave-valor de diccionario puede representar esto mismo de la siguiente forma:

    "nombre" : "Enrique"

    En este caso no se trata de una variable, por lo que hay que seguir las normas de tipos de datos. "nombre" es una cadena, al igual que "Enrique", y por eso debe ir entre comillas.

    Fíjate bien, en que en el diccionario, las claves y valores se asocian mediante los dos puntos (:), y no con un símbolo de asignación, como ocurre con las variables.

    En estos pares, el dato de la izquierda de los dos puntos, siempre es la clave, y el dato de la derecha, el valor:

    clave : valor

    Los datos que forman las claves, como puede ser "nombre", pueden ser incluso usadas como datos, y no se quedan en simples identificadores de valores.

    Con algunos ejemplos, verás lo fácil que es manejar todo esto.

    Espacio publicitario

    Crear un diccionario

    Esta es la lista que he puesto en un ejemplo del capítulo de las listas:

    camiseta = ["rojo", "L", 100, 10]

    Esta lista describe y agrupa los atributos que tiene un hipotético producto, como una camiseta, sin necesidad de utilizar cuatro variables sueltas. Sin embargo, puede ser algo confuso si no tenemos contexto sobre a qué corresponde cada valor. Por ejemplo, ¿qué representa el valor 100? ¿Son las unidades en stock o es el precio de la camiseta?

    Aquí es donde entran en juego los diccionarios. Gracias a las claves, podemos aportar una descripción a los valores. Mira cómo se podría hacer:

    camiseta = {
    "color" : "rojo",
    "talla" : "L",
    "precio" : 100,
    "unidades" : 10
    }

    Se entiende mucho más lo que es cada valor, ¿verdad?

    Claves y valores

    En el último ejemplo tenemos los siguientes elementos:

    Claves del diccionario

    • "color" (str)
    • "talla" (str)
    • "precio" (str)
    • "unidades" (str)

    Valores del diccionario

    • "rojo" (str)
    • "L" (str)
    • 100 (int)
    • 10 (int)

    El tipo de dato de los diccionarios de Python, se llama dict.

    El nombre de este tipo de dato (“dict”), proviene de dictionary, que significa diccionario en español.

    Introducción a los diccionarios de Python
    Introducción a los diccionarios de Python

    Espacio publicitario

    Llamar a valores de diccionario

    Para hacer la llamada a una clave, la realizaremos con unos corchetes ([]).

    En el siguiente ejemplo, llamo a la clave "color", con la finalidad de obtener su valor asociado:

    camiseta = {
    "color" : "rojo",
    "talla" : "L",
    "precio" : 100,
    "unidades" : 10
    }
    
    # Obtiene el valor asociado a la clave "color"
    dato_obtenido = camiseta["color"]
    
    # Vemos el resultado
    print(dato_obtenido)
    Resultado en la consola
    rojo

    Los diccionarios pueden ser grandes estructuras de datos con las que desarrollar muchas cosas en los programas, mediante la información contenida en ellos. En este punto ya puedes empezar a apreciar el potencial que tiene esta estructura para guardar datos.

    Error por clave inexistente

    Podemos recibir un error de tipo KeyError, si nos equivocamos al escribir el nombre de la clave, o esta no existe.

    En el siguiente print(), estoy intentando llamar al valor que tiene la clave "material". Por supuesto, como esta clave no existe, me lanza un error de clave inexistente:

    camiseta = {
    "color" : "rojo",
    "talla" : "L",
    "precio" : 100,
    "unidades" : 10
    }
    
    print(camiseta["material"])
    Error en la consola
    KeyError: 'material'
    Error de clave: 'material'.

    El error nos muestra que la clave es incorrecta, lo que indica que esa clave no está en el diccionario. En este ejemplo es evidente, ya que solo hay cuatro claves, pero puede haber casos en los que manejes diccionarios con miles de ellas. En esos casos, esta indicación del error será muy útil.

    Espacio publicitario

    Asignar nuevos valores a un diccionario

    Es posible asignar valores nuevos asociados a las claves de los diccionarios (reasignar). Para este propósito, indicamos la clave, y con el operador de asignación (=), le damos un valor nuevo.

    Por ejemplo, queremos modificar el stock de la camiseta. Inicialmente, está en 10 unidades. Vamos a especificar 25 unidades en stock, sin editar el diccionario directamente:

    camiseta = {
    "color" : "rojo",
    "talla" : "L",
    "precio" : 100,
    "unidades" : 10
    }
    
    # Comprobamos el stock
    print(f"Hay {camiseta['unidades']} unidades en el almacén.")
    
    # Se modifica el valor de "unidades"
    camiseta['unidades'] = 25
    
    # Comprobamos el stock de nuevo
    print(f"Hay {camiseta['unidades']} unidades en el almacén.")
    Resultado en la consola
    Hay 10 unidades en el almacén.
    Hay 25 unidades en el almacén.

    En el primer print() aparece el valor 10, que es el original. Después de la reasignación, en el último print() se comprueba que el stock ha sido modificado con 25 unidades.

    Crear claves y valores nuevos

    Se pueden crear nuevos pares clave-valor para los diccionarios de Python. Tan solo debemos indicar una clave inexistente y un valor asociado a ella.

    Si te equivocas asignando una clave inexistente, no te va a salir el error KeyError. Te va a crear una clave nueva con el valor asignado.

    En el siguiente ejemplo, voy a crear un nuevo par clave-valor para representar la marca de la camiseta. La clave será "material":

    camiseta = {
    "color" : "rojo",
    "talla" : "L",
    "precio" : 100,
    "unidades" : 10
    }
    
    # Se crea un nuevo par clave-valor en el diccionario
    camiseta["material"] = "100% Algodón"
    
    print(camiseta)
    Resultado en la consola
    {'color': 'rojo', 'talla': 'L', 'precio': 100, 'unidades': 10, 'material': '100% Algodón'}

    Espacio publicitario

    Eliminar claves y valores en diccionarios

    Es posible utilizar una de las palabras reservadas de Python, del, para poder eliminar una clave concreta de un diccionario. Por supuesto, si eliminas una clave, eliminarás también su valor asociado. Aquí tienes un ejemplo de uso:

    camiseta = {
    "color" : "rojo",
    "talla" : "L",
    "precio" : 100,
    "unidades" : 10
    }
    
    # Se elimina una clave y su valor asociado
    del camiseta["color"]
    
    print(camiseta)
    Resultado en la consola
    {'talla': 'L', 'precio': 100, 'unidades': 10}

    La clave "color" ha sido eliminada junto con el valor que llevaba asociado.

    Eliminar un diccionario entero

    Para “eliminar” un diccionario entero, puedes utilizar la palabra reservada del. Solo tienes que escribirla junto al nombre del diccionario:

    del camiseta

    He escrito “eliminar” entre comillas, por qué realmente no se elimina el diccionario directamente con del. Se elimina la referencia al objeto en memoria, y luego, el recolector de basura de Python lo elimina automáticamente.

    Este tema ya es algo más avanzado, y no es relevante en este punto del curso, pero no quería darte un dato incompleto sobre el funcionamiento de del, diciendo simplemente “elimina”.

    Después de utilizar del para eliminar un diccionario, si lo intentas llamar, recibirás un error:

    camiseta = {
    "color" : "rojo",
    "talla" : "L",
    "precio" : 100,
    "unidades" : 10
    }
    
    # Se elimina todo el diccionario
    del camiseta
    
    print(camiseta)
    Error en la consola
    NameError: name 'camiseta' is not defined.
    Error de nombre: el nombre 'camiseta' no está definido.

    El error se produce, porque en la línea del print() ya no existe el diccionario.

    del es una palabra reservada de Python.

    El operador del puede eliminar diferentes objetos en Python, no solo diccionarios. Pruébalo con listas, tuplas, etc.

    La palabra reservada del, proviene del término en inglés delete. Esto significa en español borrar o eliminar.

    Espacio publicitario




    Espacio publicitario


    Ejercicios de Python para resolver

    Para hacer los siguientes ejercicios, cuentas con los siguientes datos:

    Clave Valor
    Nombre Sandra
    Apellidos Arenas Crespo
    Edad 34
    Dirección C/Tropical n.º 45

    En todo momento, deberás decidir qué tipos de datos utilizar.

    47. Crea un diccionario con las claves y valores de la tabla. Guarda el diccionario en una variable llamada usuario.

    Este diccionario te servirá para hacer el resto de ejercicios de este capítulo.

    He colocado todos estos datos como str, tanto las claves como los valores. Excepto el valor de la clave "edad".

    La edad podría ir dentro de una cadena, pero puede que en cierta aplicación, queramos tratar los datos de edad, de los diferentes usuarios, y realizar una serie de estadísticas con ellos. Depende del uso que le quieras dar a los datos.

    usuario = {
    "nombre" : "Sandra",
    "apellidos" : "Arenas Crespo",
    "edad" : 34,
    "dirección" : "C/Tropical n.º 45"
    }
    
    print(usuario)
    Resultado en la consola
    {'nombre': 'Sandra', 'apellidos': 'Arenas Crespo', 'edad': 34, 'dirección': 'C/Tropical n.º 45'}

    48. Ahora, imprime en la consola el valor de nombre y apellidos. Deberás formar una frase igual que esta:

    El nombre completo es Sandra Arenas Crespo.

    Así es como lo he resuelto yo:

    print(f"El nombre completo es {usuario["nombre"]} {usuario["apellidos"]}.")
    Resultado en la consola
    El nombre completo es Sandra Arenas Crespo.

    Fíjate en los tipos de comillas utilizados en la cadena. Al estar los valores incrustados en un f-string, no hay por qué alternar los tipos de comillas.

    Una ventaja más de esta técnica, que me he reservado para explicártela en un caso concreto como este.

    Con que hayas mostrado la frase como te he pedido en el enunciado, lo has hecho perfecto, da igual la técnica utilizada.

    49. La dirección es incorrecta. Deberás cambiar el valor del número, ya que en realidad no es 45. Es “C/Tropical n.º 54”.

    Primero, reasignamos el valor y luego lo comprobamos, para asegurarnos de que los cambios se han realizado correctamente.

    usuario = {
    "nombre" : "Sandra",
    "apellidos" : "Arenas Crespo",
    "edad" : 34,
    "dirección" : "C/Tropical n.º 45"
    }
    
    # Reasignamos un valor mediante la clave
    usuario["dirección"] = "C/Tropical n.º 54"
    
    # Comprobamos si los cambios se hacen efectivos
    print(usuario["dirección"])
    Resultado en la consola
    C/Tropical n.º 54

    Recuerda que he indicado, que aunque no te lo pida en algunos enunciados, es conveniente siempre comprobar los resultados con un simple print().

    Es una buena costumbre que te evitará muchos fallos y descuidos. No la olvides.

    50. Añade al diccionario el siguiente número de teléfono:

    34-14782133599

    El número de teléfono, aunque solo sea un número sin guiones, debería estar siempre como tipo de dato str, ya que no es un elemento con el que tengamos que hacer cálculos matemáticos.

    # Creamos la clave inexistente con un valor
    usuario["teléfono"] = "34-14782133599"
    
    # Comprobamos si los cambios se hacen efectivos
    print(usuario["teléfono"])
    Resultado en la consola
    34-14782133599

    La clave "teléfono", al no ser un identificador de variable, no tiene ningún problema por contener un acento.

    51. Elimina la clave "edad" del diccionario.

    En el resultado del print(), al imprimir todo el diccionario, vemos que la clave "edad" ya no existe. Esto gracias al uso de la palabra del.

    # Elimina una clave con su valor
    del usuario["edad"]
    
    # Comprobamos que el diccionario no tiene la clave
    print(usuario)
    Resultado en la consola
    {'nombre': 'Sandra', 'apellidos': 'Arenas Crespo', 'dirección': 'C/Tropical n.º 45'}

    52. Elimina el diccionario completo.

    Eliminar el diccionario entero, es tan simple como hacer esto:

    # Elimina una clave con su valor
    del usuario

    Si intentas imprimirlo en la consola, te dirá que el diccionario no está definido.



    Espacio publicitario