Volver a la portadaCiencias de la Computación · 1.er año de bachillerato · Cambiar asignatura
Empezar gratis
1° bach · Ciencias de la Computación
Estructuras de datos · Organización y búsqueda de datos

Tablas y diccionarios

En la pupusería de la esquina, la dueña no recorre toda la carta para saber cuánto cuesta una horchata: sabe que «horchata» va con su precio y lo dice al instante. ¿Cómo puede una computadora guardar los datos para encontrar un precio así de rápido, sin revisar todos uno por uno? Eso lo resuelven las tablas y los diccionarios.

Tablas: filas y columnas

Una tabla organiza datos en filas y columnas. Cada fila es un registro (una persona, un producto, un día) y cada columna es una característica de ese registro.

Nombre Grado Nota
José 1.er año 8.0
María José 1.er año 9.5
Kevin 1.er año 6.5

Esta tabla tiene 3 filas de datos y 3 columnas (el encabezado con los nombres de las columnas no cuenta como fila de datos).

Para ubicar un dato necesitás dos referencias: la fila y la columna. La nota de la segunda fila es el dato donde se cruzan la fila 2 y la columna Nota: 9.5.

Tabla de tres filas y tres columnas con la celda de la fila 2, columna Nota, resaltada NombreGradoNota José1.er año8.0 María José1.er año9.5 Kevin1.er año6.5
Practica★☆☆Sin empezar
Una tabla tiene las columnas Nombre, Grado y Nota, y tres filas de estudiantes. Indicá cuántas filas y cuántas columnas tiene la tabla, y cómo ubicarías el dato de la…

Una tabla tiene las columnas Nombre, Grado y Nota, y tres filas de estudiantes. Indicá cuántas filas y cuántas columnas tiene la tabla, y cómo ubicarías el dato de la columna Nota de la segunda fila.

Resolver

Diccionarios: clave y valor

Un diccionario guarda pares clave : valor. La clave es lo que usás para buscar (como la palabra en un diccionario de libro) y el valor es el dato asociado (la definición).

precios = {"pupusa": 0.75, "horchata": 0.50, "tamal": 1.00}

Aquí las claves son "pupusa", "horchata" y "tamal"; los valores son 0.75, 0.50 y 1.00.

Las claves no se repiten: si hubiera dos «tamal», la computadora no sabría cuál precio devolver. Los valores sí pueden repetirse (dos productos pueden costar $\$1.00$).

Para consultar un valor se escribe la clave entre corchetes:

print(precios["tamal"])   # muestra 1.0

Fijate que la consulta va en un solo sentido: de la clave al valor. Preguntar «¿qué clave tiene el valor 0.50?» obliga a revisar los pares uno por uno; la respuesta es "horchata".

Practica★☆☆Sin empezar
Explicá qué es una clave y qué es un valor en un diccionario. Dá un ejemplo con el nombre de un estudiante como clave y su nota como valor.

Explicá qué es una clave y qué es un valor en un diccionario. Dá un ejemplo con el nombre de un estudiante como clave y su nota como valor.

Resolver
Practica★☆☆Sin empezar
Dado el diccionario precios = {"pupusa": 0.75, "horchata": 0.50, "tamal": 1.00}, indicá qué valor se obtiene al consultar la clave "tamal" y qué clave tiene el valor…

Dado el diccionario precios = {"pupusa": 0.75, "horchata": 0.50, "tamal": 1.00}, indicá qué valor se obtiene al consultar la clave "tamal" y qué clave tiene el valor 0.50.

Resolver

Acceder y claves inexistentes

Con una clave que existe, el acceso es directo:

capitales = {"Santa Ana": "Ilamatepec", "San Miguel": "Chaparrastique", "Izalco": "Izalco"}

print(capitales["San Miguel"])   # Chaparrastique

¿Y si la clave no existe? Por ejemplo capitales["Cerro Verde"]. En Python se produce un error (KeyError) y el programa se detiene. Para evitarlo se puede comprobar antes con una condicional:

if "Cerro Verde" in capitales:

    print(capitales["Cerro Verde"])

else:

    print("No existe esa clave")
Practica★★☆Sin empezar
Dado capitales = {"Santa Ana": "Ilamatepec", "San Miguel": "Chaparrastique", "Izalco": "Izalco"}, explicá cómo accederías al valor asociado a la clave "San Miguel". Decí…

Dado capitales = {"Santa Ana": "Ilamatepec", "San Miguel": "Chaparrastique", "Izalco": "Izalco"}, explicá cómo accederías al valor asociado a la clave "San Miguel". Decí qué pasaría si consultaras una clave que no existe, como "Cerro Verde".

Resolver

Modificar un diccionario

Un diccionario se puede cambiar. Con la misma sintaxis de corchetes:

  • Agregar un par nuevo: inventario["borrador"] = 15

  • Modificar el valor de una clave existente: inventario["lapicero"] = 25

  • Eliminar un par: del inventario["regla"]

La asignación hace una cosa u otra según si la clave ya existe: si existe, cambia su valor; si no, crea el par.

También se puede recorrer un diccionario con for para procesar todos sus pares:

for asignatura in notas:

    print(asignatura, notas[asignatura])
Practica★★☆Sin empezar
Observá este diccionario de inventario de una tienda: inventario = {"cuaderno": 12, "lapicero": 30, "regla": 8}. Escribí cómo queda después de vender 5 lapiceros y de…

Observá este diccionario de inventario de una tienda: inventario = {"cuaderno": 12, "lapicero": 30, "regla": 8}. Escribí cómo queda después de vender 5 lapiceros y de agregar un nuevo producto "borrador" con 15 unidades. Explicá qué operación usaste en cada caso.

Resolver

Simular un diccionario con listas

No todos los entornos de programación visual traen diccionarios. Se pueden simular con dos listas paralelas: una para las claves y otra para los valores, donde la posición i de una corresponde a la posición i de la otra.

nombres   = ["Fátima", "Óscar", "Valeria"]

telefonos = ["7000-0001", "7000-0002", "7000-0003"]

Para hallar el teléfono de Fátima hay que buscar primero la posición de "Fátima" en nombres (recorriendo la lista) y luego leer esa misma posición en telefonos. En el diccionario, agenda["Fátima"] llega al dato directamente.

Dos listas paralelas, nombres y teléfonos, unidas por la misma posición, junto a un diccionario que une clave y valor directamente Listas paralelas Fátima Óscar Valeria 7000-0001 7000-0002 7000-0003 pos. 0pos. 1pos. 2 Diccionario: clave "Fátima" → valor directo
Practica★★☆Sin empezar
Compará una lista de nombres con un diccionario de nombre y teléfono para buscar el número de Fátima. Explicá por qué en el diccionario se llega al dato directamente por…

Compará una lista de nombres con un diccionario de nombre y teléfono para buscar el número de Fátima. Explicá por qué en el diccionario se llega al dato directamente por la clave, mientras que en dos listas paralelas habría que localizar antes la posición.

Resolver

¿Tabla o diccionario?

Ambas estructuras guardan datos relacionados, pero sirven para cosas distintas.

Tabla Diccionario
Organización Filas y columnas Pares clave : valor
Se accede por Fila y columna La clave
Ideal para Varios datos por registro Consultar un dato rápido por un identificador

Un diccionario también puede guardar varios datos por clave si el valor es una lista:

ventas = {"lunes": [120, 0.15], "martes": [95, 0.15], "miércoles": [140, 0.15]}

Aquí ventas["miércoles"] devuelve [140, 0.15]: 140 panes a $\$0.15$ cada uno.

Practica★★★Sin empezar
Un diccionario guarda las notas de Andrea: notas = {"Matemática": 8.5, "Lenguaje": 7.0, "Ciencia y Tecnología": 9.0, "Inglés": 6.5}. Describí paso a paso cómo…

Un diccionario guarda las notas de Andrea: notas = {"Matemática": 8.5, "Lenguaje": 7.0, "Ciencia y Tecnología": 9.0, "Inglés": 6.5}. Describí paso a paso cómo calcularías el promedio recorriendo el diccionario y cómo indicarías si aprueba cada asignatura con nota mínima de 6.0. Calculá además el promedio.

Resolver
Practica★★★Sin empezar
Una tabla registra ventas de una panadería: la fila de cada día tiene las columnas Día, Panes vendidos y Precio unitario en dólares. Argumentá si para consultar…

Una tabla registra ventas de una panadería: la fila de cada día tiene las columnas Día, Panes vendidos y Precio unitario en dólares. Argumentá si para consultar rápidamente «cuánto se vendió el miércoles» conviene más una tabla o un diccionario con el día como clave, y proponé cómo representarías en un diccionario los datos de tres días, con los valores que quieras.

Resolver

Volvé al principio: la dueña de la pupusería encuentra el precio al instante porque su carta funciona como un diccionario: «horchata» (clave) lleva directo a su precio (valor).

Resumen

  • Una tabla organiza datos en filas y columnas; para un dato se necesita fila y columna.

  • Un diccionario guarda pares clave : valor; las claves no se repiten.

  • Se consulta con diccionario[clave]; si la clave no existe hay error, por eso se comprueba con in.

  • Asignar a una clave nueva agrega; a una existente modifica; del elimina.

  • Dos listas paralelas simulan un diccionario, pero hay que buscar primero la posición.

  • Elegí diccionario para consultar rápido por una clave y tabla para registros con varias columnas.

Ver todos los ejercicios de este apartado