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
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Lista | muchos valores en orden bajo un solo nombre | [7, 5, 9] |
| Índice | el número de posición de un valor, desde 0 | marks[0] |
| Rebanada | un trozo de una lista o de un texto | marks[1:3] |
| Diccionario | pares de clave y valor | {"Ana": 19} |
| Clave | el 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ón | Qué toma | Resultado con [7, 5, 9, 6] |
|---|---|---|
| marks[0] | El primero | 7 |
| marks[2] | El tercero | 9 |
| marks[-1] | El último | 6 |
| marks[1:3] | Del índice 1 al 2 | [5, 9] |
| len(marks) | Cuántos valores hay | 4 |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Prueba índices, append y rebanadas
# 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
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
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
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
# 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
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
| Palabra | Estaba ya | Diccionario después |
|---|---|---|
| a | No | {"a": 1} |
| b | No | {"a": 1, "b": 1} |
| a | Sí | {"a": 2, "b": 1} |
| c | No | {"a": 2, "b": 1, "c": 1} |
| a | Sí | {"a": 3, "b": 1, "c": 1} |
| b | Sí | {"a": 3, "b": 2, "c": 1} |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Escribe el contador de palabras
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.pySe 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
python3 ~/contar.pySe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.