Python logo - Curso de Python desde cero

Curso de Python:
Los diccionarios

Vemos las principales características de esta estructura de datos en Python

Hola, bienvenidos a otra entrega de este curso de programación en python en el que nos encontramos viendo la sintaxis básica del lenguaje.

Hemos visto en los post anteriores las listas y las tuplas, dos estructuras de datos muy importantes, y en este artículo vamos a abordar otra estructura de datos igual de importante que es el diccionario. Vamos a comenzar ya a hablar de los diccionarios y a ver sus características.

¿Qué son los diccionarios?

Los diccionarios en python son unas estructuras de datos parecidas a las listas y a las tuplas, pero con una característica especial diferenciadora, y es que a la hora de almacenar los datos dentro de un diccionario se hacen con una asociación de tipo clave : valor.

Aquellos que no tenéis conocimientos en otros lenguajes de programación, esto que acabamos de decir os deja exactamente igual. Pero los que si tenéis conocimientos en otros lenguajes, como por ejemplo Php o Java, en cuanto yo mencionamos el término clave valor, ya sabéis exactamente a qué nos estamos refiriendo.

Por ejemplo haciendo una similitud con Php, es muy parecido un diccionario a un array asociativo, son estructuras gemelas por decirlo de alguna forma. Y si hablamos de Java pues un diccionario sería algo muy parecido a lo que es un hashtable, es decir, almacenar datos con una asociación o con un formato de clave valor.

Para aquellos que no tenéis conocimientos previos, el término clave valor significa que a cada valor que nosotros almacenamos en un diccionario se le asigna una clave única.

El tipo de dato o el tipo de valor que puede almacenar un diccionario en su interior es cualquiera, es decir, nos permite almacenar todo tipo de datos: enteros, cadenas de texto, decimales… incluso en un diccionario podemos almacenar listas, podemos almacenar tuplas e incluso podemos almacenar otro diccionario.

También hay que mencionar que el orden con el que se almacenan los valores o los datos dentro de un diccionario no tiene importancia, ya que a cada valor se le asigna una clave única. ¿Qué más da que ese valor lo hayamos almacenado en primer lugar, por el medio o el último lugar? da exactamente igual.

Bien, vamos a ver cómo se traduce todo esto a código, vamos a ver cuál es la sintaxis en python de un diccionario.

Sintaxis de un diccionario en Python

La sintaxis de un diccionario es muy sencilla, el nombre que le quiere dar al diccionario siguiendo las reglas que hemos mencionado para variables, listas y tuplas. Yo voy a llevar a este, por ejemplo, mi_diccionario y abrimos llave. Si las listas van entre paréntesis, las tuplas entre corchetes, los diccionarios van entre llaves.

>>> mi_diccionario = {}

Y ahora, dentro de las llaves tenemos que comenzar con la estructura de clave:valor. La clave que se va a asignar a cada valor puede ser de cualquier tipo: puede ser un texto, puede ser un valor numérico, puede ser incluso una tupla.

En este primer diccionario mis claves van a ser de tipo texto, luego tendrán que ir entrecomilladas. Imaginaos que queremos crear un diccionario que almacene países y capitales, un ejemplo clásico para utilizar un diccionario ya que a cada país clave le podemos asignar un valor que sería la capital.

>>> mi_diccionario = {"España":"Madrid", "Francia":"París", "Alemania":"Berlín"}

Esta es la sintaxis de un diccionario. Acabamos de crear nuestro primer diccionario, y una vez que hemos creado el diccionario ¿Cómo podemos acceder a un elemento concreto de ese diccionario? tenemos que preguntar por la clave, es decir, accediendo a la clave obtendremos el valor.

En este caso en concreto si yo quiero ver por ejemplo cuál es la capital de Francia, lo que haría sería poner un print para que lo imprima, el nombre del diccionario, corchete y la clave. En este caso la clave es Francia.

>>> print(mi_diccionario["Francia"])
París

Podemos ver como efectivamente se está devolviendo el valor asignado a la clave Francia. Si lo que queremos es imprimir o acceder a un diccionario entero, lo que tenemos que hacer simplemente es poner el nombre del diccionario. Aquí podéis observar cómo me imprime todo el diccionario

>>> print(mi_diccionario)
{'España': 'Madrid', 'Francia': 'París', 'Alemania': 'Berlín'}

A partir de aquí pues se pueden hacer muchísimas operaciones con un diccionario por ejemplo cómo agregar más elementos a un diccionario ya construido.

Añadir elementos a un diccionario

Lo que hay que hacer para agregar un elemento es poner el nombre del diccionario, a continuación la clave que le vamos a asignar a este nuevo valor, por ejemplo voy a crear una clave que va a corresponder a Italia , signo igual y entre comillas porque es un texto el valor que va a tener. No os asustéis porque voy a poner Lisboa y ya sé que la capital de Italia no es Lisboa pero he cometido este error a propósito.

>>> mi_diccionario["Italia"] = "Lisboa"
>>> print(mi_diccionario)
{'España': 'Madrid', 'Francia': 'París', 'Alemania': 'Berlín', 'Italia': 'Lisboa'}

Ahora lo que imprime al leer la instrucción de imprimir el diccionario es un diccionario con un elemento más, tenemos ahí el nuevo elemento añadido Italia pero este nuevo elemento que hemos añadido de esta forma tan sencilla es erróneo.

Modificar el valor de elementos ya asignados

¿Cómo podemos modificar un valor al que ya hemos asignado una clave? para asignar un valor nuevo a una clave lo único que hay que hacer es sobrescribirla:

>>> mi_diccionario["Italia"] = "Lisboa"
>>> print(mi_diccionario)
{'España': 'Madrid', 'Francia': 'París', 'Alemania': 'Berlín', 'Italia': 'Lisboa'}
>>> mi_diccionario["Italia"] = "Roma"
>>> print(mi_diccionario)
{'España': 'Madrid', 'Francia': 'París', 'Alemania': 'Berlín', 'Italia': 'Roma'}

En los diccionarios de python cuando asignamos varios valores a una misma clave, esos valores se van sobre-escribiendo. Nunca se va a encontrar dentro de un diccionario dos claves iguales.

Eliminar elementos del diccionario

Imagina que queremos eliminar de nuestro diccionario el elemento Alemania : Berlín, lo único que hay que hacer es utilizar el método del, a continuación nombre del diccionario y a continuación la clave cuyo valor se quiere eliminar.

>>> del mi_diccionario["Alemania"]
>>> print(mi_diccionario)
{'España': 'Madrid', 'Francia': 'París', 'Italia': 'Roma'}

Si os dais cuenta, en la última impresión que hemos hecho el diccionario no trae ya el elemento Alemania.

Visto todo esto, vamos a ver cómo sería un diccionario en el cual hay una mezcla de tipos de datos. En el diccionario que hemos creado todos los datos son de tipo string, tanto las claves como los valores.

Diccionarios con diferentes tipos de valores

Puedo crear un diccionario en el cual pues el primer elemento sean dos strings, a continuación puedo crear una clave numérica con un valor que puede ser un string, y luego al revés también, puedo crear una clave que va a ser de tipo texto y a continuación un valor numérico, y todas las combinaciones en este sentido que se os puedan ocurrir.

>>> mi_diccionario_2 = {"Alemania" : "Berlín", 25 : "Ordenador", "Portátil" : 73}
>>> print(mi_diccionario_2)
{'Alemania': 'Berlín', 25: 'Ordenador', 'Portátil': 73}

Otra cosa que se puede hacer es utilizar una tupla para asignar las claves a cada uno de los valores, es algo que comenté en el vídeo de las tuplas y vamos a ver ahora cómo sería.

Utilizar una Tupla para asignar los elementos de un diccionario

Vamos a declarar una Tupla a la cual voy a llamar mi_tupla, abrimos corchete y colocamos una serie de valores de texto.

>>> mi_tupla = ["Alemania", "España", "Francia"]

Bueno pues ya tenemos aquí una tupla, ahora declaró un diccionario, mi_diccionario, y aquí si queremos que este diccionario tome a la tupla para asignar las claves a cada uno de los valores, lo único que hay que hacer pues es lo siguiente:

>>> mi_diccionario = {mi_tupla[0]:"Berlín", mi_tupla[1]:"Madrid", mi_tupla[2]:"París"}

Si recordáis en el post anterior explicamos cómo acceder a los elementos de una tupla mediante el índice, y esto seguido de dos puntos más el valor a asignar nos permite utilizar la tupla para asignar los elementos a un diccionario.

Si le decimos que imprima este diccionario podréis ver cómo tengo el diccionario con su clave:valor, clave:valor, etc.

>>> print(mi_diccionario)
{'Alemania': 'Berlín', 'España': 'Madrid', 'Francia': 'París'}

Y en el caso de que quieras acceder a un elemento en concreto hay varias posibilidades. Puedes decirle mi_diccionario junto con el número de índice de la tupla o también puedes decirle mi_diccionario junto con el elemento clave.

>>> print(mi_diccionario[mi_tupla[1]])
Madrid
>>> print(mi_diccionario["Alemania"])
Berlín

¿Cómo haríamos para que un diccionario almacene una tupla como un valor? Ya no se trata de utilizar una tupla para asignar las claves a los valores, que es lo que acabamos de hacer sino que un diccionario almacene en su interior, junto con otros valores, una tupla entera de valores. Declaramos el diccionario:

>>> mi_dicc = {23 : "Jordan", "Nombre" : "Michael", "Equipo" : "Chicago", "Anillos":[1991, 1992, 1993, 1996, 1997, 1998, ]}

El diccionario lo declaramos igual: abrimos llave y después una serie de valores. En este ejemplo tenemos entre otras, la clave anillos de tipo string, imagínate que yo quiero asignar a esta clave anillos un grupo de valores que van a ser los años en los que este deportista ganó anillos del campeonato de la nba.

>>> mi_dicc = {23 : "Jordan", "Nombre" : "Michael", "Equipo" : "Chicago", "Anillos":[1991, 1992, 1993, 1996, 1997, 1998]}
>>> print(mi_dicc)
{23: 'Jordan', 'Nombre': 'Michael', 'Equipo': 'Chicago', 'Anillos': [1991, 1992, 1993, 1996, 1997, 1998]}

Si accedemos a la clave con una tupla como valor, nos devolverá la tupla completa como resultado:

>>> print(mi_dicc["Anillos"])
[1991, 1992, 1993, 1996, 1997, 1998]

Guardar un diccionario dentro de otro diccionario

Rizando el rizo, podemos guardar un diccionario dentro de otro diccionario. Por ejemplo, podemos convertir el elemento de los anillos que ha ganado en un diccionario y eso sería de la siguiente forma:

>>> mi_dicc = {23 : "Jordan", "Nombre" : "Michael", "Equipo" : "Chicago", "Anillos":{"temporadas" : [1991, 1992, 1993, 1996, 1997, 1998]}}
>>> print(mi_dicc)
{23: 'Jordan', 'Nombre': 'Michael', 'Equipo': 'Chicago', 'Anillos': {'temporadas': [1991, 1992, 1993, 1996, 1997, 1998]}}

Aquí abriríamos una llave porque se trata de un diccionario dentro de otro diccionario, y podríamos poner temporadas entre comillas como valor de texto, cerraríamos las comillas, dos puntos y la tupla. Después de la tupla cerraríamos el diccionario-valor y cerramos el diccionario principal.

>>> print(mi_dicc["Anillos"])
{'temporadas': [1991, 1992, 1993, 1996, 1997, 1998]}

Esto es quizá de lo más complejo que se puede llegar a hacer. Tampoco habría por qué haberlo complicado tanto pero bueno para que veáis todo lo que se puede llegar a hacer.

Y para terminar este post unos cuantos métodos interesantes que se pueden utilizar con un diccionario y que seguramente en el futuro a la hora de programar los necesitaremos.

El método keys() que nos devuelve las claves un diccionario:

>>> print(mi_dicc.keys())
dict_keys([23, 'Nombre', 'Equipo', 'Anillos'])

El método values() que nos devuelve los valores de un diccionario:

>>> print(mi_dicc.values())
dict_values(['Jordan', 'Michael', 'Chicago', {'temporadas': [1991, 1992, 1993, 1996, 1997, 1998]}])

El método len() que nos devuelve la longitud de un diccionario:

>>> print(len(mi_dicc))
4

Bueno pues con esto tenemos las herramientas necesarias para poder trabajar con los diccionarios en Python, así que vamos a dejar este post en el punto en el que nos encontramos, y os digo lo de siempre, os invito a que permanezcáis atentos a la próxima entrega. Hasta entonces, que os vaya bien.

Ir arriba

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para «permitir cookies» y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en «Aceptar» estarás dando tu consentimiento a esto.

Cerrar