Los diccionarios en Python son una estructura que almacenan dos datos, la clave y el valor. Un ejemplo cotidiano es un diccionario físico donde buscamos el significado de una palabra y encontramos la palabra (clave) y su definición (valor). Veamos cómo se utilizan en código.
¿Cómo se crea un diccionario en Python?
Iniciamos creando una variable llamada numbers y especificamos el uso de diccionarios utilizando llaves. Asignamos valores a las claves:
# Configuración de una aplicación
config ={"host":"localhost","port":8080,"debug":True}print("Configuración:", config)# Contador de palabras
palabras =["manzana","banana","naranja","manzana","banana"]contador ={}for palabra inpalabras:if palabra incontador: contador[palabra]+=1else: contador[palabra]=1print("Contador de palabras:", contador)# Mapeo de usuarios a datos
usuarios ={"user123":{"nombre":"Juan","edad":30},"user456":{"nombre":"Ana","edad":25}}print("Datos de usuario user123:", usuarios["user123"])# Almacenamiento de datos estructurados
libro ={"título":"Cien años de soledad","autor":"Gabriel García Márquez","año":1967}print("Datos del libro:", libro)# Datos en formato JSONimport json
json_data = json.dumps(libro)print("Datos en JSON:", json_data)
Configuración de una Aplicación:
Se crea un diccionario para almacenar configuraciones de una aplicación.
Contador de Palabras:
Se utiliza un diccionario para contar la frecuencia de palabras en una lista.
Mapeo de Usuarios a Datos:
Se crea un diccionario para mapear identificadores de usuarios a sus datos personales.
Almacenamiento de Datos Estructurados:
Se almacena información de un libro en un diccionario
Formato JSON:
Se convierte un diccionario a una cadena JSON utilizando el módulo json.
Excelente ejemplo!
Hermano, gracias por tu aporte me sirvió de mucho.
Un diccionario en Python es una estructura de datos que permite almacenar pares clave-valor de manera eficiente. Es similar a una lista, pero en lugar de acceder a los elementos por su índice numérico, se accede a ellos mediante claves únicas. Los diccionarios son muy versátiles y se utilizan ampliamente debido a su capacidad para almacenar y recuperar datos de forma rápida utilizando claves personalizadas en lugar de índices numéricos.
Características clave de los diccionarios en Python:
Claves únicas: Cada clave en un diccionario debe ser única. No puede haber dos claves iguales en un mismo diccionario.
Valores asociados: Cada clave está asociada a un valor específico. Este valor puede ser de cualquier tipo de dato en Python: int, float, str, list, tuple, otro diccionario, etc.
Mutabilidad: Los diccionarios son mutables, lo que significa que pueden modificarse después de su creación. Puedes agregar, modificar o eliminar elementos según sea necesario.
Sintaxis: Los diccionarios se definen utilizando llaves {} y separando cada par clave-valor por comas. La sintaxis general es {clave1: valor1, clave2: valor2, ...}.
Ejemplo de diccionario en Python:
# Crear un diccionario de personapersona = { 'nombre': 'Juan',
'edad': 30,
'profesion': 'Ingeniero',
'ubicacion': 'Ciudad de México'}
# Acceder a valores por claveprint(persona['nombre']) # Imprime 'Juan'print(persona['edad']) # Imprime 30
# Modificar un valorpersona['edad'] = 31
# Agregar un nuevo par clave-valorpersona['email'] = 'juan@example.com'
# Eliminar una entradadel persona['ubicacion']
# Imprimir el diccionario actualizadoprint(persona)
En este ejemplo, persona es un diccionario que almacena información sobre una persona utilizando claves como 'nombre', 'edad', 'profesion', etc. Los diccionarios son especialmente útiles cuando se necesita asociar datos relacionados entre sí de manera semántica, permitiendo un acceso eficiente y organizado a través de las claves definidas.
Me gustó tu complemento, gracias.. me gusto que no te saliste del tema, y rectificaste lo de la profe..
Excellent, contribution and summary!
En el minuto 2:18 dice que su altura es un boolean, he visto varios errores de ese tipo a lo largo del curso pero me parecían insignificantes, sin embargo ya son muy constantes, pueden confundir a alguien que aprende en verdad desde cero. Me parece extraño que nadie revise las clases antes de subirlas, o que a pesar de que los revisen y vean los errores lo suban así, ya existía otro curso que no tenia esos errores y lo actualizaron por este.
Estoy de acuerdo. Al menos podrian dejar un comentario en la sección de recursos explicando en que se equivocaron.
Yo también lo noté. He visto el mismo error en muchos otros cursos.
#Diccionarios#Los diccionarios en phyton almacenan dos datos, la clave y el valor
#Es como el diccionario por eso se les dice asi
#palabra =CLAVE#definición =VALORnumbers ={1:"uno",2:"dos",3:"tres"}mi_diccionario ={'clave1':'valor1','clave2':'valor2','clave3':'valor3'}#Un diccionario en Python se define usando llaves {} y contiene pares de clave-valor separados por comas.#Las claves deben ser únicas e inmutables(pueden ser números, cadenas o tuplas), mientras que los valores pueden ser de cualquier tipo de datos
print(numbers[2])print(mi_diccionario["clave3"])information ={"nombreI":"Evaristo","Apellido":"Gomez","Altura":1.78,"Edad":35}print(information)del information["Edad"]print(information)claves = information.keys()print(claves)#print(type(claves))values = information.values()print(values)pairs = information.items()print(pairs)estudiante ={'nombreE':'Varo','edad':20,'cursos':['Matemáticas','Física','Química'],'promedio':8.0}print(estudiante)nombreE = estudiante['nombreE']print(nombreE) # Salida:Juanedad = estudiante['edad']print(edad) # Salida:21estudiante['edad']=22 # cambiando el valor de un diccionario
print(estudiante['edad']) # Salida:22clavesE = estudiante.keys()print(clavesE)#print(type(clavesE))valuesE = estudiante.values()print(valuesE)pairsE = estudiante.items()print(pairsE)estudiante['graduado']=False # de esta forma agrego una nueva clave y valor, clave dentro de los [] y le digo que es igual al valor asignado
print(estudiante) # Salida:{'nombre':'Juan','edad':22,'cursos':['Matemáticas','Física','Química'],'promedio':8.5,'graduado':False}del estudiante['promedio']print(estudiante) # Salida:{'nombre':'Juan','edad':22,'cursos':['Matemáticas','Física','Química'],'graduado':False}graduado = estudiante.pop('graduado') # esta es otra forma de eliminar
print(estudiante) # Salida:{'nombre':'Juan','edad':22,'cursos':['Matemáticas','Física','Química']}contacts ={"Vane":{"Apellido":"Canto","Altura":1.60,"Edad":29},"Evaristo":{"Apellido":"Gomez","Altura":1.80,"Edad":35}}print(contacts["Vane"])# dict.keys():Devuelve una vista de las claves del diccionario.# dict.values():Devuelve una vista de los valores del diccionario.# dict.items():Devuelve una vista de los pares clave-valor del diccionario.# dict.get(clave, valor_por_defecto):Devuelve el valor asociado a la clave.Si la clave no existe, devuelve valor_por_defecto.# dict.update(otro_diccionario):Actualiza el diccionario con los pares clave-valor de otro_diccionario.```#Diccionarios#Los diccionarios en phyton almacenan dos datos, la clave y el valor #Es como el diccionario por eso se les dice asi#palabra =CLAVE#definición =VALORnumbers ={1:"uno",2:"dos",3:"tres"} mi\_diccionario ={'clave1':'valor1','clave2':'valor2','clave3':'valor3'}#Un diccionario en Python se define usando llaves {} y contiene pares de clave-valor separados por comas.#Las claves deben ser únicas e inmutables(pueden ser números, cadenas o tuplas), mientras que los valores pueden ser de cualquier tipo de datos print(numbers\[2])print(mi\_diccionario\["clave3"])information ={"nombreI":"Evaristo","Apellido":"Gomez","Altura":1.78,"Edad":35}print(information)del information\["Edad"]print(information)claves = information.keys()print(claves)#print(type(claves))values = information.values()print(values)pairs = information.items()print(pairs)estudiante ={'nombreE':'Varo','edad':20,'cursos': \['Matemáticas','Física','Química'],'promedio':8.0}print(estudiante)nombreE = estudiante\['nombreE']print(nombreE) # Salida:Juanedad= estudiante\['edad']print(edad) # Salida: 21estudiante\['edad']=22 # cambiando el valor de un diccionarioprint(estudiante\['edad']) # Salida: 22clavesE = estudiante.keys()print(clavesE)#print(type(clavesE))valuesE = estudiante.values()print(valuesE)pairsE = estudiante.items()print(pairsE)estudiante\['graduado']=False # de esta forma agrego una nueva clave y valor, clave dentro de los \[] y le digo que es igual al valor asignadoprint(estudiante) # Salida:{'nombre':'Juan','edad':22,'cursos': \['Matemáticas','Física','Química'],'promedio':8.5,'graduado':False}del estudiante\['promedio']print(estudiante) # Salida:{'nombre':'Juan','edad':22,'cursos': \['Matemáticas','Física','Química'],'graduado':False}graduado = estudiante.pop('graduado') # esta es otra forma de eliminar print(estudiante) # Salida:{'nombre':'Juan','edad':22,'cursos': \['Matemáticas','Física','Química']}contacts ={"Vane":{"Apellido":"Canto","Altura":1.60,"Edad":29},"Evaristo":{"Apellido":"Gomez","Altura":1.80,"Edad":35}}print(contacts\["Vane"])\# dict.keys():Devuelve una vista de las claves del diccionario.# dict.values():Devuelve una vista de los valores del diccionario.# dict.items():Devuelve una vista de los pares clave-valor del diccionario.# dict.get(clave, valor\_por\_defecto):Devuelve el valor asociado a la clave.Si la clave no existe, devuelve valor\_por\_defecto.# dict.update(otro\_diccionario):Actualiza el diccionario con los pares clave-valor de otro\_diccionario.
I like a lot a platzi community in the panel section, always contribuit
Les comparto lo que se me ocurrió con la agenda y lo convertí en un ejemplo de perfil. Se puede ir completando más.
El output:
Espero que les sirva.
Se podrian utilizar diccionarios para el analisis de datos 👀
Sí Arnold de hecho suelen utilizarse para almacenar valores como nombres de etiquetas. Para ello se implementa por medio de una llave para múltiples valores almacenados dentro de una lista.
Un uso de ello podría ser para convertir ciertos datos categoricos (datos que siguen un patrón como una categoría) en un valor de tipo númerico (dummy) con el fin de estandarizar los datos para procesarlos de una manera más simple.
Bases de datos de clientes y recetas para comida. Se me ocurren esas dos, soy nuevo en esto jajjajja
entendiendo como llave:valor
pudiera sustitur la llava por un id ?
en el ejemplo usamos los nombre como llave y me trae la informacion desde el apellido. pero no el nombre porque es la llave.
Si es completamente posible usar un identificador, incluso es posible usar como llave un integer.
Sí se puede usar, mi recomendación es que las llaves sean descriptivas, sino, te puede perder con los nombres de las llaves
Como ya se habló de los grupos en los tipos de variables, que son los mutables e inmutables. Creo que cabe comentar que:
Los diccionarios tienen una limitación en cuanto a las keys, pues estas solo pueden ser inmutables: : cadenas, enteros, tuplas (con valores inmutables en sus miembros), etc. Luego para los valores no existe restricciones.
hola quise hacer un pequeño ejemplo de un diccionario de un inventario. no supe como poner las fechas de vencimiento en tipo fecha, y bueno poe ahí tengo algo q no cuadra jeje. espero me ayuden
inventario ={"Inv_Aseo":{"Productos Baño":{1234:{"Nombre":"Limpido","Presentación":"100ml","Cantidad":2,"Valor Und":1300,"Vencimiento":"1/10/2026"},1235:{"Nombre":"Cepillo de baño","Presentación":"N/A","Cantidad":1,"Valor Und":3000,"Vence":"N/A"},1236:{"Nombre":"Pato Glade","Presentación":"Pastilla 5g","Cantidad":8,"Valor Und":2800,"Vence":"12/12/2025"}},"Productos de aseo personal":{2345:{"Nombre":"Jabón de cuerpo","Presentación":"20g","Cantidad":30,"Valor Und":1500,"Vence":"1/12/2028"},2346:{"Nombre":"Crema dental","Presentación":"500ml","Cantidad":12,"Valor Und":8500,"Vence":"30/2/2026"},2347:{"Nombre":"Espuma de afeitar","Presentación":"70ml","Cantidad":3,"Valor Und":13700,"Vence":"5/7/2026"}}},"Inv_viveres":{"Granos":{7890:{"Nombre":"Blanquillo","Presentación":"450g","Cantidad":45,"Valor Und":1250,"Vence":"21/9/2026"},7891:{"Nombre":"zaragoza","Presentación":"500g","Cantidad":73,"Valor Und":1550,"Vence":"21/9/2026"},7892:{"Nombre":"Arberja","Presentación":"500g","Cantidad":30,"Valor Und":1880,"Vence":"21/9/2026"}}}}print(inventario)
¿Como le hacen para escribir código?
Dejo esto por si alguien viene de JS.
Si son como los objetos de JS
Si, es necesario usar comillas en las claves
No, no se puede usar la sintaxis de . para acceder a la clave
Vengo de TypeScript
Casos de vida real pra diccionarios puede ser, menus con sus descripción
Como bien comentan en la clase a simple vista se podría utilizar o se utiliza en los supermercador, cada articulo debe tener su respectiva información básica.
Por ejemplo, si tenemos un 'pure de tomate' debemos saber cual es su nombre, cuantas piezas tenemos en el inventario, cual es su código de barras, para los asociados que laboran en el supermercado es útil saber a que departamento pertenece el artículo, cual es su precio, si tiene promoción o no, quien es su proveedor entre otros datos útiles.
También en el diccionario podemos tener funciones, en este ejemplo, podemos hacer una función que de el precio total del pure de tomate con los impuestos sumados.
contacts ={"Carla":{"Apellido":"Florida","Altura":1.60,"Edad":29},"Diego":{"Apellido":"Antezana","Altura":1.80,"Edad":32}}# Quiero cambiar solo la edad de Carla en este y puedo utilizar el siguiente método:contacts.update({"Carla":{"Apellido":"Florida","Altura":1.60,"Edad":30}})# Existe otra forma de cambiar la Edad de Carla sin tener que repetir los valores de Apellido y Altura?```contacts ={"Carla":{"Apellido":"Florida", "Altura":1.60, "Edad":29}, "Diego":{"Apellido":"Antezana", "Altura":1.80, "Edad":32}}\# Quiero cambiar solo la edad de Carla en este y puedo utilizar el siguiente método: contacts.update({"Carla":{"Apellido":"Florida", "Altura":1.60,"Edad":30}})\# Existe otra forma de cambiar la Edad de Carla sin tener que repetir los valores de Apellido y Altura?
contacts['Carla']['Edad'] = 30
Me pareció interesante la idea de usar un diccionario de diccionarios ya que es como aquellas muñecas rusas que tienen otras muñecas dentro de ellas.
Me hizo entender la esencia de los diccionarios, como aquellos para guardar información y tipos de cualquier clase. Incluso los mismos diccionarios.
¿Es posible tener un lista de diccionarios en Python?
Sí, es totalmente posible tener una lista de diccionarios en Python. De hecho, es una práctica común para organizar datos estructurados.
Aquí tienes un ejemplo:
# Lista de diccionariospersonas =[{"nombre":"Andres","edad":25,"ciudad":"Madrid"},{"nombre":"Carli","edad":30,"ciudad":"Barcelona"},{"nombre":"Platzi","edad":35,"ciudad":"Valencia"}]
Espero haberte ayudado. ¡Nunca pares de aprender! 🚀🚀
Para cambiar un valor específico en un diccionario anidado, puedes acceder al diccionario utilizando su clave y luego asignar el nuevo valor. En tu caso, para cambiar la edad de Carla a 27, lo harías así:
information ={"Karla":{"apellido":"Florida","altura":1.60,"edad":29},"Diego":{"apellido":"Artesana","altura":1.80,"edad":32}}# Cambiar edad de Carlainformation["Karla"]["edad"]=27
Después de ejecutar esto, la edad de Carla será 27.
💡 Un ejemplo práctico es gestionar una lista de usuarios, donde podemos ver 👀, buscar 🔍, actualizar ✏️ y eliminar 🗑️ sus datos fácilmente. Ideal para organizar información 🚀
usuarios ={}contador_id =1# Contador para generar IDs únicos# Función para agregar un usuariodefagregar_usuario():global contador_id
nombre =input("Nombre: ") apellido =input("Apellido: ") email =input("Email: ") categoria =input("Categoría: ") usuarios[contador_id]={"id": contador_id,"nombre": nombre,"apellido": apellido,"email": email,"categoria": categoria
}print(f"Usuario agregado con ID: {contador_id}") contador_id +=1# Función para visualizar la lista de usuariosdefver_usuarios():ifnot usuarios:print("No hay usuarios registrados.")else:print("\nLista de usuarios:")print("-"*60)print("| ID | Nombre | Apellido | Email | Categoría |")print("-"*60)for id_usuario, datos in usuarios.items():print(f"| {datos['id']:<4} | {datos['nombre']:<15} | {datos['apellido']:<15} | {datos['email']:<20} | {datos['categoria']:<11} |")print("-"*60)# Función para eliminar un usuario por su IDdefeliminar_usuario(): id_usuario =int(input("Ingrese el ID del usuario a eliminar: "))if id_usuario in usuarios:del usuarios[id_usuario]print(f"Usuario con ID {id_usuario} eliminado.")# Llamar recursivamente a agregar_usuario después de eliminar agregar_usuario()else:print(f"No se encontró un usuario con ID {id_usuario}.")# Función para buscar usuarios por nombre o apellidodefbuscar_usuario(): busqueda =input("Ingrese nombre o apellido para buscar: ").lower() resultados =[]for id_usuario, datos in usuarios.items():if busqueda in datos["nombre"].lower()or busqueda in datos["apellido"].lower(): resultados.append(datos)if resultados:print("\nResultados de la búsqueda:")print("-"*60)print("| ID | Nombre | Apellido | Email | Categoría |")print("-"*60)for datos in resultados:print(f"| {datos['id']:<4} | {datos['nombre']:<15} | {datos['apellido']:<15} | {datos['email']:<20} | {datos['categoria']:<11} |")print("-"*60)else:print("No se encontraron usuarios con ese nombre o apellido.")# Función para actualizar un usuario por su IDdefactualizar_usuario(): id_usuario =int(input("Ingrese el ID del usuario a actualizar: "))if id_usuario in usuarios:print(f"\nDatos actuales del usuario con ID {id_usuario}:")print("-"*60)print("| ID | Nombre | Apellido | Email | Categoría |")print("-"*60) datos = usuarios[id_usuario]print(f"| {datos['id']:<4} | {datos['nombre']:<15} | {datos['apellido']:<15} | {datos['email']:<20} | {datos['categoria']:<11} |")print("-"*60)# Solicitar nuevos datos nombre =input("Nuevo nombre (dejar vacío para no cambiar): ") apellido =input("Nuevo apellido (dejar vacío para no cambiar): ") email =input("Nuevo email (dejar vacío para no cambiar): ") categoria =input("Nueva categoría (dejar vacío para no cambiar): ")# Actualizar solo los campos que no están vacíosif nombre: usuarios[id_usuario]["nombre"]= nombre
if apellido: usuarios[id_usuario]["apellido"]= apellido
if email: usuarios[id_usuario]["email"]= email
if categoria: usuarios[id_usuario]["categoria"]= categoria
print(f"Usuario con ID {id_usuario} actualizado.")else:print(f"No se encontró un usuario con ID {id_usuario}.")# Menú principaldefmenu():whileTrue:print("\n--- Gestión de Usuarios ---")print("1. Agregar usuario")print("2. Ver lista de usuarios")print("3. Eliminar usuario por ID")print("4. Buscar usuario por nombre o apellido")print("5. Actualizar usuario por ID")print("6. Salir") opcion =input("Seleccione una opción: ")if opcion =="1": agregar_usuario()elif opcion =="2": ver_usuarios()elif opcion =="3": eliminar_usuario()elif opcion =="4": buscar_usuario()elif opcion =="5": actualizar_usuario()elif opcion =="6":print("Saliendo del programa...")breakelse:print("Opción no válida. Intente nuevamente.")# Ejecutar el menúif __name__ =="__main__": menu()
Los diccionarios en Python se utilizan en diversas aplicaciones en la vida real. Por ejemplo:
Bases de datos: Para almacenar registros de usuarios, donde cada clave puede ser un identificador (ID) y el valor, los detalles del usuario.
E-commerce: Para almacenar productos, donde cada clave es el identificador del producto y el valor son atributos como nombre y precio.
API: Para estructurar respuestas, donde la clave es el nombre del campo y el valor es la información correspondiente, facilitando la manipulación de datos.
Sigue explorando las aplicaciones de los diccionarios y cómo optimizar su uso en Python.
Algo que también puedes guardar en los diccionarios son funciones, lo que te puede ser muy útil para solo invocar el diccionario, pasarle datos y recibir los datos de salida, en este ejemplo que hecho una calculadora:
Imaginate las posibilidades, puedes tener la información de un producto y a su vez tener una función que de el valor total del producto con impuestos. Es muy útil, dejo el código aquí abajo.
operations ={'sum': lambda x,y: x + y,'sub': lambda x,y: x - y,'mul': lambda x,y: x * y,'div': lambda x,y: x / y if y >0else'No se puede dividir entre 0'}print('suma 7 + 5 =',operations['sum'](7,5))print('resta 15 - 5 =',operations['sub'](15,5))print('multiplicación 30x4 =',operations['mul'](30,4))print('división 10 / 2 =',operations['div'](10,2))print('división entre 0 ==> 10 + 0 =',operations['div'](10,0))