Agregar
productos.append("Webcam") lo pone al final.
productos.insert(0, "Webcam") lo pone en una posición
concreta.
Una variable guarda un dato. Pero un negocio no tiene un precio: tiene una lista de precios, un catálogo de productos, un registro de ventas.
Python tiene dos estructuras para eso, y con ellas resuelves casi todo: listas y diccionarios.
Va entre corchetes, con los elementos separados por comas. Mantiene el orden en que los pusiste y admite repetidos.
productos = ["Teclado", "Mouse", "Monitor", "Cable"]
print(productos[0]) # el primero
print(productos[2]) # el tercero
print(productos[-1]) # el ULTIMO
print(len(productos)) # cuantos hayTeclado Monitor Cable 4
El primer elemento es el 0, no el 1. Cuesta al
principio y es la causa del error más común de todos:
IndexError: list index out of range, que sale al pedir
productos[4] en una lista de cuatro -porque sus posiciones son 0, 1,
2 y 3-.
El atajo que sí ayuda: [-1] es el último, [-2] el
penúltimo. No hay que saber cuántos hay.
productos.append("Webcam") lo pone al final.
productos.insert(0, "Webcam") lo pone en una posición
concreta.
productos.remove("Mouse") quita por valor.
productos.pop() saca el último y te lo devuelve.
productos.sort() los ordena alfabéticamente y
modifica la lista original.
sorted(productos) devuelve una copia ordenada y deja la
original quieta.
"Mouse" in productos devuelve
True o False.
Es la forma correcta de comprobar antes de quitar algo: si haces
remove() de lo que no está, el programa se cae.
En una lista buscas por posición, y "el elemento 3" no dice nada. En un
diccionario cada dato tiene una clave que lo
nombra. Va entre llaves, con clave: valor.
producto = {
"nombre": "Teclado mecanico",
"precio": 189000,
"stock": 12,
"activo": True
}
print(producto["nombre"])
print(producto["precio"])
# Cambiar un valor
producto["stock"] = 8
# Agregar una clave nueva
producto["categoria"] = "Perifericos"
print(producto["stock"], producto["categoria"])Teclado mecanico 189000 8 Perifericos
producto["precio"] se entiende solo; producto[1]
obliga a ir a mirar qué había en esa posición. Cuando cada dato significa
algo distinto, usa diccionario. Cuando son muchos datos del mismo tipo, usa
lista.
Pedir una clave que no existe rompe el programa
(KeyError). Para leer sin riesgo está .get(), que
devuelve None -o lo que le indiques- en vez de fallar:
producto.get("descuento", 0) → devuelve 0 si esa clave
no está.
Aquí es donde esto se vuelve poderoso. Una lista de diccionarios es exactamente una tabla: cada diccionario es una fila y cada clave es una columna. Así se representa una hoja de Excel en Python.
ventas = [
{"producto": "Teclado", "cantidad": 2, "valor": 189000},
{"producto": "Mouse", "cantidad": 5, "valor": 45000},
{"producto": "Monitor", "cantidad": 1, "valor": 890000},
]
total = 0
for venta in ventas:
subtotal = venta["cantidad"] * venta["valor"]
total += subtotal
print(venta["producto"], "->", subtotal)
print("-" * 30)
print("TOTAL DEL DIA:", total)Teclado -> 378000 Mouse -> 225000 Monitor -> 890000 ------------------------------ TOTAL DEL DIA: 1493000
La trampa que destroza datos sin avisar: asignar una lista a otra variable no la copia. Las dos variables apuntan al mismo dato, así que modificar una cambia la otra.
copia = original → mal, es la misma lista.
copia = original.copy() → bien, es una lista nueva.
Es el mismo principio de "trabaja siempre sobre una copia", pero dentro del programa: si crees que estás tocando la copia y estás tocando el original, pierdes los datos y nada te lo dice.
Decide cuál usarías y haz clic para comprobarlo.
Arrastra cada método a su definición, o toca uno y luego su espacio. Al terminar pulsa Comprobar.
sorted().for.Con .items(), que entrega la clave y el valor a la
vez:
for clave, valor in producto.items():
También existen .keys() y .values() si solo
necesitas una de las dos partes.
Sí, Python lo permite: [1, "hola", True] es válido.
Pero casi siempre es señal de un diseño confuso. Una lista suele guardar
cosas del mismo tipo.
Son como listas pero no se pueden modificar, y
van entre paréntesis: (3, 7). Se usan para datos que no deben
cambiar, como unas coordenadas. Para este curso no las necesitas.
Indicando por qué clave ordenar:
sorted(ventas, key=lambda v: v["valor"], reverse=True)
Se ve raro la primera vez. Es tema del curso intermedio, pero se copia y funciona.
En datos = ["a", "b", "c"], ¿qué devuelve datos[-1]?
¿Qué hace copia = original con una lista?
¿Cómo se representa una tabla de datos en Python?
Ya tienes todas las piezas. En la última lección vas a agruparlas en funciones y construir un programa completo que le sirva de verdad a un negocio.
Siguiente: Funciones y proyecto final
Continuar ← Ciclos: repetir sin copiar y pegar