arrow_back Volver
Inicio keyboard_arrow_right Artículos keyboard_arrow_right Artículo

Diccionarios en Python

Eduardo Ismael Garcia

Full Stack Developer at Código Facilito.

av_timer 3 Min. de lectura

remove_red_eye 47037 visitas

calendar_today 16 Enero 2020

En Python existen diferentes estructuras de datos las cuales nos permiten almacenar y gestionar diferentes tipos de datos, por ejemplo tenemos a las listas, las tuplas y a los diccionarios.

Y de este último es del que quisiera hablarles el día de hoy, de los diccionarios, la estructura, desde mi punto de vista, más asombrosa que posee Python. 🤠

Bien, una vez dicho esto comencemos.

Los diccionarios en Python, al igual que las listas y las tuplas, nos permiten almacenar diferentes tipos de datos: Strings, enteros, flotantes, booleanos, tuplas, listas e inclusive otros diccionarios. 😯

Los diccionario son mutables, es decir, es posible modificar su longitud, podemos agregar o quitar elementos de él; de igual forma todos los valores almacenados en el diccionario pueden ser modificados.

A diferencias de las listas y de las tuplas los diccionarios no se rigen por la regla de los índices, no, nada de eso, en este caso todos los valores que se almacenen en el diccionario no corresponderá a un índice, si no a una llave.

Todos los valores necesitan tener una llave y cada llave necesita tener un valor.

Algo interesante a mencionar y a tener muy en cuenta es que una llave podrá ser cualquier objeto inmutable en Python, ya sea un string, un entero, un flotante una tupla etc..

Veamos un ejemplo para que nos quede mucho más en claro. 🤔

diccionario = {}
diccionario = dict()

Para definir un diccionario haremos uso de un juego de llaves o de la función dict(). De ambas formas es correcto.

Para poder almacenar algún valor seguiremos la siguiente estructura, nuestra llave, dos puntos y el valor el cual queremos asociar.

Por ejemplo, el string total, dos puntos, 55, con esto le indico a Python que la llave total almacena 55.

diccionario = {"total": 55}

Si necesitamos almacenar nuevos valores basta con separarlos mediante una coma.

diccionario = {"total": 55, "descuento": True, "subtotal": 15}

Veamos otro ejemplo.

diccionario = {"total": 55, 10: "Curso de Python", (1,2,3): True}

En este caso ya nos complicamos un poco. Estamos almacenando tres valores con sus correspondientes llaves. Estas tres llaves son valores inmutables. Tenemos:

  • Un string ("total")
  • Un número entero (10)
  • Una tupla que almacena números enteros (1,2,3)

Estamos almacenando 55, "Curso Python", True respectivamente.

Regularmente haremos uso de llaves de un mismo tipo, comúnmente string, sin embargo si por algún motivo necesitas almacenar otro tipo de llave sabrás que puedes hacerlo. Un dato interesante es que podemos utilizar clases como llaves. 😎

class User:
    pass

diccionario[User] = User()

Si haz trabajando con objetos JSON los diccionarios te serán muy familiares ya que de hecho el equivalente de un JSON en Python son los diccionarios.

usuario = {
    'nombre': 'Nombre del usuario',
    'edad' : 23, 
    'curso': 'Curso de Python',
    'skills':{
        'programacion' : True,
        'base_de_datos': False
    },
    'medallas' : ['básico', 'intermedio']
}

Cómo ves este tipo de dato puede ser tan complejo como deseemos.

Para poder agregar, obtener o modificar algún valor del diccionario haremos uso de corchetes.

diccionario = dict()

diccionario['usuario'] = 'eduardo'
diccionario['usuario'] = 'eduardo_gpg'

print(diccionario['usuario'])

podemos obtener todas las valles de nuestro diccionario utilizando el método keys, de igual forma podremos obtener todos los valores el diccionario con le método values.

>>> diccionario = { 'Eduardo': 1, 'Fernando':2, 'Uriel':3, 'Rafael': 4}

>>> diccionario.keys()
dict_keys(['Eduardo', 'Fernando', 'Uriel', 'Rafael'])

>>> diccionario.values()
dict_values([1, 2, 3, 4])

Por otro lado, si queremos recorrer tanto las llaves como sus correspondientes valores haremos uso del método items.

>>> for key, value in diccionario.items():
...     print(key, value)
... 
Eduardo 1
Fernando 2
Uriel 3
Rafael 4

Un método al cual sin duda le podemos sacar mucho provecho es el método get, este método nos permite obtener el valor de un diccionario con respecto a una llave, lo interesante de este método ocurre en caso la llave NO exista, por que verás, si intentamos acceder a una llave que no existe utilizando corchete obtendremos el error KeyError, pero con el método get seremos capaces de establecer un valor por default y de esta forma evitar el Error. 😎

Veamos un ejemplo.

usuario = {
    'name': 'Eduardo Ismael',
    'age': 26, 
    'job': 'CódigoFacilito'
}

calificaciones = usuario.get('calificaciones', [])
if calificaciones:

    for calificacion in calificaciones:
        print(calificacion

En este caso intentamos acceder a la calificaciones de un usuario, en particular este usuario no posee la llave calificaciones, así que mandamos una lista vacía, si la lista No esta vacía pues simplemente la recorremos e imprimimos los valores en ella.

Ya para finalizar el vídeo me gustaría mencionar que al igual que con las listas es posible implementar el comprehensión con los diccionarios, Dict comprension.

usuarios = [ 'Eduardo', 'Fernando', 'Uriel', 'Rafael']
diccionario = { usuario:position + 1 for position, usuario in enumerate(usuarios)  }

print(diccionario)

Bien, eso sería todo por este vídeo, recuerda que si estas interesado en aprender o mejorar tus habilidades con Python tenemos una especialidad en codigofacilito que sin duda te puede interesar, páginas web, videojuegos, pruebas unitarias, base de datos, reconocimiento fácil, manipulación de imágenes y mucho más en codigofacilito.com