¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Listas y diccionarios en Python

Después de esta lección: Puedo guardar muchos valores en listas y diccionarios y recorrerlos.

Lección de 60 min5 comandosLaboratorio de comandos de Linux de cada día: los treinta comandos que se escriben de memoria

Cómo guardar muchos valores en Python

Una lista guarda muchos valores en orden y un diccionario guarda pares de clave y valor. Son las dos formas más usadas en Python de tener muchos datos bajo un solo nombre.

Una biblioteca universitaria quiere saber qué palabra se repite más en unos comentarios. Con un diccionario se cuenta en pocas líneas.

Al final de esta lección

Nota

Puedo guardar muchos valores en listas y diccionarios y recorrerlos.

Palabras clave

PalabraQué significaEjemplo
Listamuchos valores en orden bajo un solo nombre[7, 5, 9]
Índiceel número de posición de un valor, desde 0marks[0]
Rebanadaun trozo de una lista o de un textomarks[1:3]
Diccionariopares de clave y valor{"Ana": 19}
Claveel nombre con el que buscas un valor en un diccionario

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Una lista guarda valores en orden

Se escribe entre corchetes y con comas: [7, 5, 9, 6]. Cada valor tiene un índice, y el primero es el 0, no el 1.

El índice -1 es el último. Una rebanada como marks[1:3] toma desde el índice 1 hasta antes del 3.

Ejemplo resuelto: los índices de una lista

ExpresiónQué tomaResultado con [7, 5, 9, 6]
marks[0]El primero7
marks[2]El tercero9
marks[-1]El último6
marks[1:3]Del índice 1 al 2[5, 9]
len(marks)Cuántos valores hay4

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Prueba índices, append y rebanadas

Código: python
# La lista de notas de un grupo.
marks = [7, 5, 9, 6]
print(marks[0])
print(marks[-1])
marks.append(8)
print(len(marks))
print(marks[1:3])
# Cambia marks[0] a 10 con marks[0] = 10 y muestra la lista.

Añade un valor a una lista

Comando
python3 -c "grades = [7, 5, 9]; grades.append(6); print(grades, len(grades))"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Rebana un texto y una lista

Comando
python3 -c "print('programacion'[0:4], [1, 2, 3, 4, 5][1:3])"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un error frecuente

Advertencia

Mucha gente cree que el primer valor de una lista está en el índice 1. Está en el 0. Una lista de 4 valores llega hasta el índice 3, y pedir el 4 da un error. Si dudas, usa -1 para el último.

Un for recorre los valores de una lista

Ya sabes recorrer una lista con for. Con un acumulador sacas la suma o el mayor.

Para el mayor, guarda el primer valor y cambia la variable cada vez que veas uno más grande.

Encuentra la nota más alta

Código: python
marks = [7, 5, 9, 6]
best = marks[0]
for mark in marks:
    if mark > best:
        best = mark
print("La mejor nota es", best)
# Cambia la lista y vuelve a ejecutar.

Un diccionario busca un valor por su clave

Un diccionario se escribe entre llaves: {"Ana": 19, "Luis": 21}. Cada par une una clave con un valor. Buscas con la clave: ages["Luis"] da 21.

Para añadir o cambiar un par escribe ages["Marta"] = 20. Para saber si existe una clave usa "Ana" in ages.

Busca, añade y recorre un diccionario

Código: python
# Un diccionario guarda pares: nombre y edad.
ages = {"Ana": 19, "Luis": 21}
ages["Marta"] = 20
print(ages["Luis"])
print("Ana" in ages)
for name in ages:
    print(name, ages[name])
# Añade a Pablo con 22 años y vuelve a ejecutar.

Busca una clave en la terminal

Comando
python3 -c "ages = {'Ana': 19, 'Luis': 21}; print(ages['Luis'])"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un diccionario cuenta palabras

Para contar palabras, parte el texto con split() y recorre la lista. Si la palabra ya es una clave, suma 1. Si no, empieza en 1.

El resultado es un diccionario con cada palabra y las veces que aparece.

Ejemplo resuelto: contar palabras paso a paso

PalabraEstaba yaDiccionario después
aNo{"a": 1}
bNo{"a": 1, "b": 1}
aSí{"a": 2, "b": 1}
cNo{"a": 2, "b": 1, "c": 1}
aSí{"a": 3, "b": 1, "c": 1}
bSí{"a": 3, "b": 2, "c": 1}

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Escribe el contador de palabras

Comando
printf 'text = "a b a c a b"\ncounts = {}\nfor word in text.split():\n    if word in counts:\n        counts[word] = counts[word] + 1\n    else:\n        counts[word] = 1\nprint(counts)\n' > ~/contar.py

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Ejecútalo y compáralo con la tabla

Comando
python3 ~/contar.py

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Sobre este laboratorio y su código: Laboratorio de comandos de Linux de cada día: los treinta comandos que se escriben de memoria

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.