Introducción
Los diccionarios en Python representan otra estructura de datos muy conveniente para ciertos tipos de problemas. Al contrario de lo que ocurre con una lista, accesibles a través de la posición que ocupa un determinado elemento dentro de la misma, un diccionario es accesible mediante una clave. En este punto, es importante remarcar que las claves de un diccionario en Python deben ser de un tipo inmutable (int, float, decimal, bool, string, tuple, y range). Típicamente, el tipo de las claves de un diccionario será int o string.
A la hora de considerar el uso de diccionarios en Python, estos se pueden entender como conjuntos de pares clave-valor. Así, las claves de un diccionario deben ser únicas. Por ejemplo, si se utiliza un diccionario para manejar información de un conjunto de personas de forma que la clave sea el DNI, entonces no es posible almacenar dos personas en el diccionario con el mismo DNI.
Como el lector puede imaginar en este punto, dos son las operaciones que más frecuentemente se utilizan a la hora de manejar un diccionario: i) añadir un nuevo valor con la correspondiente clave y ii) extraer un valor del diccionario empleando para ello la clave que permite indexarlo. Evidentemente, también es posible eliminar elementos de un diccionario.
El siguiente fragmento de código muestra un ejemplo de uso básico de un diccionario desde el intérprete interactivo de Python:
>>> d = {}
>>> d[‘David’] = 39
>>> d[‘Alberto’] = 34
>>> d
{‘David’: 39, ‘Alberto’: 34}
>>> d[‘David’]
39
>>> del d[‘David’]
>>> d
{‘Alberto’: 34}
Es posible iterar sobre los elementos de un diccionario, siendo incluso posible recuperar, de manera simultánea, la clave y el valor de cada elemento del diccionario. El siguiente ejemplo muestra esta característica, a la vez que expone otra forma diferente, y más sintetizada, de crear un diccionario en Python:
>>> d= {‘David’: 39, ‘Alberto’: 34, ‘Javier’: 33, ‘Cristina’: 30, ‘Elena’: 23}
>>> for k, v in d.items():
... print(k, v)
...
David 39
Alberto 34
Javier 33
Cristina 30
Elena 23
Como se ha introducido previamente, los diccionarios son estructuras de datos ideales para almacenar datos donde existe una relación clara entre una referencia o propiedad única de cada elemento de la estructura y su valor correspondiente.
Atención
A la hora de elegir una estructura de datos en Python para guardar elementos que pertenecen a un conjunto, es posible dudar entre utilizar una lista o un diccionario. Con carácter general, es importante recordar que el diccionario es más rápido que la lista en Python. Además, tanto la búsqueda de elementos como su recorrido es más eficiente en un diccionario. Sin embargo, la lista mantiene una relación de orden entre sus elementos, mientras que esto no ocurre en un diccionario.
Ejemplo de uso del tipo diccionario en Python
En esta sección se muestra un sencillo ejemplo de uso de diccionarios en Python. En esencia, se hace uso de un diccionario para almacenar y manipular información relativa a capitales del mundo.
>>> capitales = {‘España’: ‘Madrid’, ‘Portugal’: ‘Lisboa’, ‘Francia’: ‘París’, ‘Italia’: ‘Roma’}
>>> print(len(capitales))
4
>>> if ‘España’ in capitales:
... print(capitales [‘España’])
...
Madrid
>>> print(capitales [‘Reino Unido’])
Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
KeyError: ‘Reino Unido’
>>> ‘Grecia’ in capitales
False
>>> capitales.pop(‘Italia’)
‘Roma’
>>> print(capitales)
{‘España’: ‘Madrid’, ‘Portugal’: ‘Lisboa’, ‘Francia’: ‘París’}
>>> capitales [‘Portugal’] = ‘Oporto’
>>> print(capitales)
{‘España’: ‘Madrid’, ‘Portugal’: ‘Oporto’, ‘Francia’: ‘París’}
Cuando se trata de acceder a un diccionario mediante una clave que no está contenida en el mismo, como ocurre en el ejemplo anterior cuando capitales se indexa mediante Grecia, el intérprete arroja una excepción indicando que existe un error con dicha clave. Es posible comprobar si una clave está contenida en un diccionario mediante el operador in
.
Por otro lado, en el ejemplo anterior también se ilustra el uso de la operación pop()
, empleada para eliminar una entrada del diccionario a partir de una clave.
También es posible actualizar una entrada del diccionario. Para ello, simplemente ha de indexarse a través de la clave, ya existente en el mismo, indicando el nuevo valor. Este caso concreto se ilustra, en el ejemplo, con la actualización de la capital de Portugal.
Finalmente, es posible manejar operaciones relativas a la ordenación de elementos en un diccionario. Por ejemplo, se puede aplicar la función sorted()
para obtener, en orden ascendente, una lista que contenga las claves de un diccionario:
>>> sorted(capitales)
[‘España’, ‘Francia’, ‘Portugal’]