CON · Concepto 6 · Estructuras de datos

30.Diccionarios

Estructuras que guardan pares clave–valor, para encontrar un dato por su nombre en lugar de por su posición.

¿Qué es?

Un diccionario guarda datos en pares clave–valor: cada valor tiene un nombre (la clave) con el que se busca. En lugar de «el dato en la posición 2», dices «el dato llamado edad».

Funciona como un diccionario de verdad: buscas la palabra (clave) y encuentras su definición (valor). O como una agenda: buscas «Ana» y encuentras su teléfono.

alumno = {"nombre": "Ana", "edad": 16, "grupo": "3A"}
Clave Valor
"nombre" "Ana"
"edad" 16
"grupo" "3A"
  • Las claves son únicas (no se repiten) y suelen ser textos o números.
  • Los valores pueden ser de cualquier tipo, incluso listas u otros diccionarios.

Sintaxis (pseudocódigo / Python)

Pseudocódigo con arreglos paralelos (PSeInt)

Algoritmo Telefonos
	Definir nombres, telefonos Como Caracter
	Definir buscado Como Caracter
	Definir i Como Entero
	Dimension nombres[3], telefonos[3]
	nombres[1] <- "Ana"
	telefonos[1] <- "555-0101"
	nombres[2] <- "Luis"
	telefonos[2] <- "555-0102"
	nombres[3] <- "Sofía"
	telefonos[3] <- "555-0103"
	Escribir "¿A quién buscas?"
	Leer buscado
	Para i <- 1 Hasta 3 Hacer
		Si nombres[i] = buscado Entonces
			Escribir "Teléfono: ", telefonos[i]
		FinSi
	FinPara
FinAlgoritmo

Python

telefonos = {"Ana": "555-0101", "Luis": "555-0102", "Sofía": "555-0103"}

print(telefonos["Luis"])              # consultar
telefonos["Pedro"] = "555-0104"       # agregar
telefonos["Ana"] = "555-0199"         # modificar
del telefonos["Sofía"]                # borrar
print("Ana" in telefonos)             # ¿existe la clave? True
print(telefonos.get("Sofía", "No registrado"))   # consultar sin error
print(len(telefonos))                 # 3

for nombre, telefono in telefonos.items():
    print(f"{nombre}: {telefono}")
Operación Código
Consultar d["clave"] o d.get("clave", valor_por_defecto)
Agregar o modificar d["clave"] = valor
Borrar del d["clave"] o d.pop("clave")
Claves, valores, pares d.keys(), d.values(), d.items()

Ejemplo guiado

Problema: contar cuántas veces aparece cada palabra en un texto.

Idea: recorrer las palabras; la clave es la palabra y el valor, cuántas veces ha aparecido.

texto = "el gato y el perro y el pájaro"
conteo = {}
for palabra in texto.split():
    conteo[palabra] = conteo.get(palabra, 0) + 1

for palabra, veces in sorted(conteo.items(), key=lambda par: par[1], reverse=True):
    print(f"{palabra}: {veces}")

Salida esperada:

el: 3
y: 2
gato: 1
perro: 1
pájaro: 1

conteo.get(palabra, 0) devuelve el conteo actual o 0 si la palabra todavía no está; así no hay error la primera vez.

Lista de diccionarios: un grupo de alumnos

grupo = [
    {"nombre": "Ana", "promedio": 9.1},
    {"nombre": "Luis", "promedio": 7.4},
]
for alumno in grupo:
    print(alumno["nombre"], "→", alumno["promedio"])

Errores comunes

# ✗ Incorrecto
precios = {"lápiz": 7, "goma": 5}
print(precios["cuaderno"])
KeyError: 'cuaderno'
# ✗ Incorrecto
d = {[1, 2]: "par"}
TypeError: unhashable type: 'list'

Buenas prácticas

  • Usa diccionarios cuando busques datos por nombre o identificador (matrícula, código de producto).
  • Claves descriptivas y consistentes: "nombre", "promedio", siempre igual escritas.
  • get() con valor por defecto para evitar errores.
  • Recorre con .items() cuando necesites clave y valor.
  • Para estructuras repetidas (muchos alumnos con los mismos campos), considera clases o dataclasses más adelante.

Material descargable

Aún no hay material descargable para este tema. Pronto habrá cuadernillos, manuales o laboratorios.

Referencias

© solutions_ · Fundamentos de programación · 30 Diccionarios