En Python, los diccionarios son objetos de almacenamiento de datos que utilizan una clave para recuperar un valor. Piense en la lista de contactos de su teléfono celular o en su directorio telefónico. Buscamos el nombre de la persona, la clave y su número de teléfono es el valor. Los diccionarios son increíblemente útiles a la hora de almacenar y ordenar datos. Usamos un diccionario en nuestro para proyecto de bucle que vio canales de noticias RSS utilizados para generar contenido en una página web.
Vamos a ver cómo crear, actualizar y eliminar claves y valores dentro de un diccionario y luego usaremos un diccionario en un proyecto del mundo real donde creamos un sistema de notificación usando Python y nfty.sh.
Para demostrar cómo usar diccionarios en Python, usaremos Thonny, un editor de Python gratuito, fácil de usar y multiplataforma.
1. En un navegador, vaya al sitio web de Thonny y descargar el lanzamiento para su sistema.
2. Alternativamente, instale la versión oficial de Python. usando esta guía. Tenga en cuenta que esta guía cubre la instalación en Windows 10 y 11.
Cómo crear un diccionario en Python
El uso más básico de un diccionario es almacenar datos, en este ejemplo crearemos un diccionario llamado “registro” y en él almacenaremos los nombres (claves) y registros de naves espaciales/números (valores) de los personajes de Star Trek.
1. Cree un diccionario en blanco llamado «registro». Se pueden crear diccionarios con datos que ya están dentro, pero al crear un diccionario en blanco tenemos un “lienzo en blanco” desde el cual comenzar.
registry =
2. Agregue un nombre y número de envío al registro. Recuerde que el nombre es la clave y el número de barco es el valor. Los valores pueden ser cadenas, números enteros, flotantes, tuplas y listas.
registry["James T Kirk"] = 1701
3. Agregue algunos nombres más al registro.
registry["Hikaru Sulu"] = 2000
registry["Kathryn Janeway"] = 74656
registry["Ben Sisko"] = 74205
4. Imprima el contenido del diccionario del registro.
print(registry)
5. Guarde el código como starfleet-registry.py y haga clic en Ejecutar para iniciar el código.
Listado de códigos completo: creación de un diccionario
registry =
registry["James T Kirk"] = 1701
registry["Hikaru Sulu"] = 2000
registry["Kathryn Janeway"] = 74656
registry["Ben Sisko"] = 74205
print(registry)
Actualización y eliminación de entradas en un diccionario.
Los diccionarios son actualizables (mutables en el lenguaje de programación) y eso significa que podemos actualizar la clave (nombres) y los valores (números de barco).
Para nuestro primer escenario, recibimos una llamada de Ben Sisko y quiere que su entrada se actualice a Benjamin. Vamos a agregar este código al código de ejemplo anterior.
1. Agregue una declaración impresa para mostrar que estamos realizando actualizaciones. Esto es completamente opcional, pero a los efectos de este ejemplo aclara que estamos actualizando el diccionario.
print(“UPDATES”)
2. Agregue una clave «Benjamin Sisko» y configúrela para usar el valor almacenado en «Ben Sisko».
registry["Benjamin Sisko"] = registry["Ben Sisko"]
3. Elimine «Ben Sisko» del registro.
del registry["Ben Sisko"]
4. Imprima el contenido actual del registro. Podemos ver que la clave «Ben Sisko» ya no está y ha sido reemplazada por «Benjamin Sisko». El valor también ha sido transferido.
print(registry)
A continuación actualizaremos la entrada de James T Kirk. Parece que tiene un nuevo número de barco (algo que tiene que ver con establecer “accidentalmente” una contraseña fácil en su aplicación de autodestrucción) y por eso necesitamos actualizar el valor de su entrada.
1. Agregue una declaración impresa para mostrar que estamos realizando actualizaciones. Esto es completamente opcional, pero a los efectos de este ejemplo aclara que estamos actualizando el diccionario.
print("Kirk's new number")
2. Actualice la clave «James T Kirk» con el nuevo número de barco. Tenga en cuenta que debido a que estamos agregando -A al valor, tenemos que ajustar el valor en » » para indicar que ahora estamos usando una cadena.
registry["James T Kirk"] = "1701-A"
3. Imprimir el contenido del registro.. Ahora podemos ver que James T Kirk tiene un nuevo número de barco.
Finalmente necesitamos eliminar a Benjamin Sisko del registro. Parece que ha “desaparecido” mientras estaba en las cuevas de fuego en Bajor. Entonces necesitamos eliminar su entrada del registro. Usaremos el código existente y agregaremos tres líneas nuevas.
1. Agregue una declaración impresa para mostrar que estamos eliminando entradas. Esto es completamente opcional, pero a los efectos de este ejemplo aclara que estamos eliminando entradas del diccionario.
print("Deleting Benjamin Sisko")
2. Elimine “Benjamin Sisko” del registro. Aún no sabemos quién será el nuevo capitán.
del registry["Benjamin Sisko"]
3. Imprima el registro para confirmar la eliminación.
print(registry)
4. Guarde y ejecute el código.
Listado de códigos completo: actualización y eliminación de un diccionario
registry =
registry["James T Kirk"] = 1701
registry["Hikaru Sulu"] = 2000
registry["Kathryn Janeway"] = 74656
registry["Ben Sisko"] = 74205
print(registry)
print("UPDATES")
registry["Benjamin Sisko"] = registry["Ben Sisko"]
del registry["Ben Sisko"]
print(registry)
print("Kirk's new ship")
registry["James T Kirk"] = "1701-A"
print(registry)
print("Deleting Benjamin Sisko")
del registry["Benjamin Sisko"]
print(registry)
Usando un bucle For con diccionarios
Los bucles For son increíbles. Podemos usarlos para iterar a través de un objeto, recuperando datos a medida que avanza. Usemos uno con nuestro ejemplo de código existente para recorrer los nombres (claves) e imprimir el nombre y el número de barco de cada capitán.
1. Cree un bucle for para recorrer las claves y valores en el diccionario de registro. Este bucle recorrerá todos los elementos del diccionario y guardará la clave y el valor actuales cada vez que se repita el bucle.
for keys, values in registry.items():
2. Cree una oración que incluya el nombre del capitán (claves) y el número/registro del barco (valores).
print("Captain", keys, "registry is", values)
3. Guarde el código y haga clic en Ejecutar. Verá el nombre y el número de barco de cada capitán impresos en la parte inferior del caparazón de Python.
Listado de códigos completo: uso de un bucle For con diccionarios
registry =
registry["James T Kirk"] = 1701
registry["Hikaru Sulu"] = 2000
registry["Kathryn Janeway"] = 74656
registry["Ben Sisko"] = 74205
print(registry)
print("UPDATES")
registry["Benjamin Sisko"] = registry["Ben Sisko"]
del registry["Ben Sisko"]
print(registry)
print("Kirk's new ship")
registry["James T Kirk"] = "1701-A"
print(registry)
print("Deleting Benjamin Sisko")
del registry["Benjamin Sisko"]
print(registry)
for keys, values in registry.items():
print("Captain", keys, "registry is", values)
Uso de diccionarios en un proyecto del mundo real
Hemos aprendido los conceptos básicos, ahora usemos un diccionario en un proyecto del mundo real. vamos a usar ntfy.sh, un servicio para enviar notificaciones a dispositivos Android e iOS. La API de Python para ntfy.sh se basa en diccionarios. Lo mejor de todo es que no hay archivos de instalación de Python, ya que utiliza el módulo de solicitudes de Python para manejar el envío de mensajes a ntfy.sh.
1. Instalar ntfy.sh para su dispositivo Android/iOS.
2. Abra la aplicación y haga clic en + para crear una nueva suscripción.
3. Cree un nuevo tema y haga clic en Suscribirse. Elegimos utilizar la prueba th. Crea un tema que sea personal para ti. También tenga en cuenta que es posible que los temas no estén protegidos con contraseña, así que no envíe datos confidenciales.
4. Deja la aplicación abierta en tu dispositivo.
Ahora nuestra atención se centra en nuestra PC con Thonny.
5. Crea un archivo en blanco.
6. Importe el módulo de solicitudes. Este es un módulo de código Python preescrito diseñado para enviar y recibir conexiones de red.
import requests
7. Utilice solicitudes para publicar un mensaje en ntfy. Tenga en cuenta que debemos especificar el nombre del tema, en nuestro caso https://ntfy.sh/th-test, como parte del argumento de la función. El siguiente argumento, los datos, es el texto que verá el usuario. Pero nuestro interés está en los «encabezados», ya que se trata de un diccionario que puede contener varias entradas. Ahora contiene un título para la notificación.
requests.post("https://ntfy.sh/th-test",
data="This is a test of ntfy for Tom's Hardware",
headers= "Title": "Python Dictionaries are useful" )
8. Guarde el código como diccionario-ntfy.py y haga clic en Ejecutar. Esto enviará el mensaje a los servidores de ntfy y desde allí aparecerá la notificación en tu dispositivo.
Listado de códigos completo: Proyecto del mundo real
import requests
requests.post("https://ntfy.sh/th-test",
data="This is a test of ntfy for Tom's Hardware",
headers= "Title": "Python Dictionaries are useful" )
Un proyecto avanzado de diccionario del mundo real
Creemos un proyecto más avanzado, uno que utilice un diccionario para almacenar varios elementos. Vamos a reutilizar el código anterior, pero modificarlo para satisfacer nuestras necesidades.
1. Nuestra línea de importación y solicitudes sigue siendo la misma.
import requests
requests.post("https://ntfy.sh/th-test",
2. Abrir y leer un archivo en la memoria. Estos son los datos que se envían en la notificación. En este caso comenzamos con una imagen que está en el mismo directorio que nuestro código. Si la imagen se encuentra en una ubicación diferente en su máquina, especifique la ruta completa al archivo.
data=open("yoga.jpg", 'rb'),
3. Crea un diccionario llamado «encabezados». Esto forma la información que se envía en la notificación.
headers=
4. Dentro del diccionario de encabezados, especifique las siguientes claves y valores.
Los mensajes de prioridad 5 son urgentes, la prioridad más alta y configurarán su teléfono para que vibre/suene continuamente hasta que sean respondidos.
Etiquetas: son emojis y etiquetas que se utilizan para agregar íconos y datos adicionales a una notificación. Si la etiqueta tiene un emoji, lo verás.
Título: el título superior, en negrita para la notificación.
Hacer clic: Al hacer clic en la notificación, se abrirá la página web.
Nombre de archivo: el nombre del archivo que se envía.
"Priority": "5",
"Tags": "rotating_light",
"Title": "Let me in, it is cold!!",
"Click": "https://www.tomshardware.com/reviews/elecfreaks-cm4-xgo",
"Filename": "yoga.jpg"
)
5. Guarde el código y haga clic en Ejecutar. Ahora mire su dispositivo y verá una notificación que muestra nuestro mensaje personalizado.
Listado de códigos completo: proyecto avanzado
import requests
requests.post("https://ntfy.sh/th-test",
data=open("yoga.jpg", 'rb'),
headers=
"Priority": "5",
"Tags": "rotating_light",
"Title": "Let me in, it is cold!!",
"Click": "https://www.tomshardware.com/reviews/elecfreaks-cm4-xgo",
"Filename": "yoga.jpg"
)