Logo Python Fundamentos de la programación (Python)

[M8] Diccionarios

En este módulo trabajaremos con los diccionarios de Python.

Un diccionario es una estructura de datos de Python que es mutable. En vez de estar indexado por una secuencia, está indexado en función de sus claves. A nivel abstracto, consiste en una clave con un valor asociado.

Contenido


Crear un Diccionario en Python

Un diccionario se representa mediante un par de llaves {} en las que se incluyen los pares clave:valor separados por una coma.

La sintaxis para crear un diccionario es la siguiente:

diccionario = {"clave_1": "valor_1", "clave_2": "valor_2", "clave_3": "valor_3"}

Ejemplo:

diccionario_notas = {'C': 'DO’, 'D': 'RE', 'E': 'MI'}

Para imprimir un diccionario, se utiliza la instrucción print

print(diccionario_notas)

Claves y valores

En un diccionario, las claves son tipos de datos inmutables (que no se pueden cambiar) que pueden ser cadenas o números. Las claves deben ser únicas dentro de un diccionario (no se pueden duplicar dentro del mismo). En caso de que se use más de una vez, las entradas posteriores sobrescribirán el valor anterior.

notas musicales, diccionario

Cada clave se conecta con un valor, por lo tanto, se crea una estructura similar a un mapa. Los diccionarios, por lo tanto, contienen un par clave:valor en cada posición.


Características de las claves

Las claves deben ser únicas

Las claves de un diccionario permiten acceder a sus valores, por lo tanto deben ser únicas. Si repetimos una clave (ejemplo la tecla g) con un nuevo valor, ésta sobreescribirá el valor asociado anterior. Ejemplo:

diccionario_notas = {'C': 'DO', 'D': 'RE', 'E': 'MI', 'E': 'FA'}
print(diccionario_notas)

>>> {'C': 'DO', 'D': 'RE', 'E': 'FA'}

En el ejemplo anterior el valor MI asociado a la clave E ha sido sobrescrito por el valor FA.

Las claves deben ser inmutables

El tipo de datos de las claves deberá ser inmutable. Veamos un ejemplo de lo que sucede cuando se intenta definir la clave como un tipo de datos mutable.

dict_immutable = {['C','C+','C-']: 'DO', 'D': 'RE', 'E': 'MI'}

TypeError Traceback (última llamada más reciente)
en
----> 1 dict_inmutable = {['C','C+','C-']: 'DO', 'D': 'RE', 'E': 'MI'}
TypeError: tipo no modificable: 'lista'

A partir del resultado anterior, puede observar que definir la primera clave del diccionario como una lista da como resultado un TypeError, ya que las claves del diccionario deben ser tipos inmutables y la lista es un tipo mutable.

Sin embargo, existe una solución alternativa, que consiste en reemplazar la lista por una tupla, ya que una tupla es un tipo de datos inmutable.

dict_immutable = {('C','C+','C-'): 'DO', 'D': 'RE', 'E': 'MI'}
print(dict_inmutable)

>>> {('C','C+','C-'): 'DO', 'D': 'RE', 'E': 'MI'}

Características de las claves

Existen tres métodos que permiten acceder a las claves y los valores del diccionario.

.items() Permite acceder al par clave-valor. Devuelve una lista de los elementos del diccionario en forma de pares de tupla clave-valor. Ejemplo:

dict_items = diccionario_notas.items()
print (dict_items([('C', 'DO'), ('D', 'RE'), ('E', 'MI')])

Para acceder a claves y valores por separado, se utilizan los métodos .keys() y .values() respectivamente. Ejemplo:

dict_keys = diccionario_notas.keys()
print(dict_keys)

>>> (['C', 'D', 'E'])

dict_values = diccionario_notas.values()
print (dict_values)

>>> (['DO', 'RE', 'MI'])

Asimismo se puede usar un bucle for para acceder los valores de un diccionario. Ejemplos:

for key, value in diccionario_notas.items():
    print(key,end=', ')

>>> C, D, E

for key, value in diccionario_notas.items():
    print(value,end=', ')

>>> DO, RE, MI

También se puede acceder directamente a los valores de un diccionario, utilizando el método .get. Éste método devuelve el valor de la clave dada si está presente en el diccionario. De lo contrario, devolverá el mensaje especificado por el usuario.

Sintaxis:

print(diccionario.get(valor_clave, 'Mensaje de error'))

Ejemplo:

notas = {'C': 'DO', 'D': 'RE', 'E': 'MI'}
nota = input("Indica la letra correspondiente a la nota a buscar: ")
print(notas.get(nota, "La nota no está registrada"))

Agregar, modificar y eliminar elementos de un diccionario

Para agregar un elemento a un diccionario, se indica un nuevo par clave:valor de la siguiente manera: diccionario["clave"] = "valor". Ejemplo:

diccionario_notas['F'] = 'FAS'

Para modificar el valor de una clave, se utiliza el método .update. Ejemplo:

diccionario_notas.update ({'F': 'FA'})

Para eliminar un elemento de un diccionario, se utiliza el método .pop indicando la clave del elemento que se desea eliminar. En el caso de que se intente eliminar un elemento que no se encuentre en el diccionario Python devolverá un error.

Sintaxis:

diccionario.pop(clave, 'mensaje de error')

Ejemplo:

diccionario_notas.pop('C', 'No se encuentra la nota')
print(diccionario_notas)

>>> {'D': 'RE', 'E': 'MI'}

Otras formas de eliminar