El siguiente paso a las listas y tuplas que vimos en anteriores Pyldoras Pythonicas, son los diccionarios. Y un diccionario en Python, es como un diccionario en la vida del día a día. Es decir, cada palabra tiene asociado un significado. Pues exactamente igual tenemos en Python, cada palabra, que llamaremos clave
, tiene asociado un significado, que llamaremos valor
. Es decir, que un diccionario no es mas que un conjunto de parejas clave – valor. Los diccionarios en Python son un tipo de dato realmente muy potente.
Indicar que si bien en el caso de un diccionario al uso, la clave
(palabra que buscamos), siempre es una cadena de texto, en Python, la clave puede ser cualquier tipo de dato, un entero, una cadena de texto. Incluso, es posible que el tipo de dato varíe, es decir, que para un elemento sea de un tipo y para otro elemento del diccionario, sea de otro tipo.
Diccionarios en Python
¿Como definir diccionarios en Python?
Existen diferentes opciones para definir diccionarios en Python. La manera mas habitual que utilizo para crear un diccionario, es exactamente utilizando clave - valor
. Por ejemplo,
diccionario = {"clave1":"valor1", "clave2":"valor2"}
Otra opción para definir un diccionario es utilizando tuplas
como puedes ver en el siguiente ejemplo,
diccionario = dict([("clave1", "valor1"), ("clave2", "valor2")])
En el caso de que las claves sean cadenas de texto, como en los ejemplos anteriores, también tienes otra opción para definir un diccionario como puedes ver en el siguiente ejemplo,
diccionario = dict(clave1="valor1", clave2="valor2")
Por supuesto, también puedes crear un diccionario vacío. Algo tan sencillo, como dicccionario = {}
.
¿Como acceder a cada uno de los elementos del diccionario?
Para acceder a los elementos de un diccionario lo puedes hacer utilizando sus correspondientes índices, de la misma forma y manera que lo hacías tanto en el caso de las tuplas, como en el caso de las listas. Así, siguiendo con el ejemplo anterior, para acceder a un determinado elemento de nuestro diccionario, tendríamos que hacerlo utilizando su correspondiente clave,
print(diccionario["clave1"])
En el caso de que intentes obtener el valor de un elemento, cuya clave no está en el diccionario, se producirá un error.
Indicarte que existen dos métodos interesantes en los diccionarios. Uno es keys()
que te devuelve las claves de un diccionario, mientras values()
te devuelve los valores del diccionario.
¿Como modificar el diccionario?
Modificar un diccionario pasa por modificar un elemento del diccionario, ya sea para añadir ese elemento al diccionario, para editar y modificar su valor, o bien para eliminar el elemento del diccionario.
Añadir un nuevo elemento al diccionario
La forma mas sencilla de añadir un nuevo elemento al diccionario es a través de su clave valor. Esto es así, siempre y cuando no exista previamente esta clave en el diccionario, porque de otra forma, en lugar de añadir un elemento nuevo al diccionario, lo que estarás haciendo es modificar el valor correspondiente a la clave en cuestión. Es decir, para añadir un elemento en el diccionario sería,
diccionario["clave1"] = "valor1"
Sin embargo, si ya existe diccionario["clave1"]
lo que estarás es modificando su correspondiente valor asociado. Por ejemplo,
>>> diccionario["clave1"] = "valor1"
>>> print(diccionario["clave1"])
valor1
>>> diccionario["clave1"] = "valor2"
>>> print(diccionario["clave1"])
valor2
Otra opción para añadir elementos al diccionario, es utilizando el método update
. Pero, al igual que en el caso anterior, tienes que tener en cuenta, que si ya existe el elemento lo va a actualizar. Así por ejemplo,
>>> diccionario = {"clave1": "valor1"}
>>> diccionario.update({"clave2": "valor2})
>>> print(diccionario)
{"clave1": "valor1", "clave2": "valor2"}
De nuevo, para que veas,
print(diccionario[«clave1»])
>>> diccionario = {"clave1": "valor1"}
>>> diccionario.update({"clave1": "valor2})
>>> print(diccionario)
{"clave1": "valor2"}
Eliminar un elemento del diccionario
Existen diferentes procedimientos y métodos para eliminar elementos de un diccionario. Así puedes utilizar el método pop
indicando la clave del elemento que quieres eliminar. Al hacerlo de esta forma, nos devolverá el valor asociado a la clave, como por ejemplo,
>>> diccionario = {"clave1": "valor1", "clave2": "valor2"}
>>> diccionario.pop("clave2")
valor2
En el caso de que intentes eliminar un elemento que no se encuentre en el diccionario te devolverá un error, a menos ,que indiques un valor por defecto, como por ejemplo,
>>> diccionario = {"clave1": "valor1", "clave2": "valor2"}
>>> diccionario.pop("clave3", "error")
error
Otra opción que tienes para eliminar elementos de un diccionario es utilizando popitem()
. Con este método quitarás el último elemento que se encuentre en tu diccionario, devolviendo una tupla que contendrá clave valor. Por ejemplo,
>>> diccionario = {"clave1": "valor1", "clave2": "valor2"}
>>> diccionario.popitem()
("clave2", "valor2")
Por último si lo que quieres hacer es eleiminar todos los elementos de un diccionario tienes que utilizar el método clear()
.
Modificar un elemento del diccionario
Esto básicamente es lo que hemos estado viendo para el caso de añadir un elemento en un diccionario, pero teniendo en cuenta que la clave tiene que existir, como es lógico. Así, tienes las opciones que te muestro en el siguiente ejemplo,
>>> diccionario = {"clave1": "valor1"}
>>> diccionario.update({"clave1": "valor2})
>>> print(diccionario)
{"clave1": "valor2"}
>>> diccionario["clave1"] = "valor3"
>>> print(diccionario)
{"clave1": "valor3"}
¿Se puede ordenar un diccionario?¿Como?
Si, es posible ordenar los elementos de un diccionario, tanto atendiendo a su clave como a su valor. Esto lo puedes ver en los siguientes ejemplos. Sin embargo, no te preocupes si se te escapa, porque le dedicaremos una Pydora completa a lambda
,
>>> d = {"a": 3, "c": 1, "b": 2}
>>> print(d)
{'a': 3, 'c': 1, 'b': 2}
>>> sorted(d.items(), key=lambda k:k[0])
[('a', 3), ('b', 2), ('c', 1)]
>>> sorted(d.items(), key=lambda k:k[1])
[('c', 1), ('b', 2), ('a', 3)]
El vídeo
Para completar la información que has podido leer en referencia a los diccionarios en Python, te pido que me acompañes en el siguiente vídeo para que lo veas en acción.