La solicitud

De Debra Marshall, Gerente de Almacén
Tu objetivo
Asigna a result un diccionario con las mismas claves que stock, donde cada valor sea el stock de la mañana menos cada cantidad vendida de ese producto en sales (ints). No cambies a mano los números iniciales.
- Guarda un dict en
resultpendiente
Tu código
Cargando el editor…
Solución de referencia
Mote revisa tu resultado
Presiona Ejecutar. Cada fila que cumple el objetivo se vuelve una luciérnaga en tu linterna.
Lo que recibe Debra, y por qué
La lección
Desempaquetar parejas en un bucle
Cada venta es una tupla, una pareja fija de valores: el nombre del producto y la cantidad. Cuando
todos los elementos de una lista tienen la misma forma, puedes desempaquetarlos directamente en la
línea del for:
for name, qty in sales:
print(name, qty)
# Hazel Linen Throw Pillow 6
# Northfield Brass Bud Vase 2
# ...
Eso es más claro que sale[0] y sale[1], y Python lanza un error si alguna fila tiene un número de
valores incorrecto, lo que es un aviso temprano útil en un flujo de datos desordenado.
Actualizar un diccionario en el sitio
Un diccionario de niveles de existencias es un saldo acumulado. Cada venta lee el número actual de esa clave y escribe el nuevo:
left = dict(stock) # a copy, so the morning count stays intact
left["Hazel Linen Throw Pillow"] = left["Hazel Linen Throw Pillow"] - 6 # 34
El cojín aparece tres veces en las ventas de hoy: 6, 3 y 2 unidades. Cada pasada del bucle resta de lo
que dejó la anterior, así que va 40, 34, 31, 29. La misma línea se puede escribir con el atajo
left[name] -= qty.
dict(stock) crea un diccionario nuevo con las mismas claves y valores. Trabajar sobre una copia
significa que sigues teniendo los números de la mañana si alguien pregunta «¿con qué empezamos?», y
puedes repetir el cálculo sin volver a cargar nada. Si escribieras left = stock, ambos nombres
apuntarían al mismo diccionario y el conteo de la mañana se sobrescribiría.
Comprueba los totales
Una conciliación rápida detecta la mayoría de los errores. Las existencias de la mañana suman 85 unidades, y las ventas suman 23. Lo que obtengas al final debe sumar 85 - 23 = 62:
sum(left.values()) # 62
Si tus números no cuadran, se omitió una venta o se contó dos veces.
Errores comunes
- Restar del número de la mañana en cada pasada (
stock[name] - qty). Solo sobrevive la última venta de cada producto. - Escribir
left = stocken lugar de una copia, y luego preguntarte por qué cambió el conteo de la mañana. - Olvidar que el nombre de un producto en
salesdebe coincidir exactamente con la clave. “Hazel linen throw pillow” con una l minúscula lanzaría unKeyError.
¡Linterna encendida!
Practicaste: dictionariesfor looptuple unpackingaccumulator
- Resuelto
- Sin pistas
- Al primer intento
