-
1. En las ventas de PyShop, teclado = {p.cliente for p in pedidos if p.producto == "Teclado"} tiene 71 clientes, ebook (los que compraron el Ebook de Python) tiene 124 y len(teclado & ebook) es 43. ¿Cuánto vale len(teclado | ebook)?
La unión cuenta una sola vez a los 43 clientes que están en ambos sets: 71 + 124 − 43 = 152. La set comprehension ya eliminó los clientes repetidos de cada grupo.
-
2. piezas es un Counter con Taza 875, Libreta 836, Ebook de Python 564, Mouse 366 y Teclado 242. ¿Qué imprime a, *resto, z = sorted(piezas.values()) seguido de print(a, resto, z)?
sorted ordena los valores de menor a mayor: [242, 366, 564, 836, 875]. El primer nombre toma 242, el último toma 875 y *resto recoge en una lista los tres del medio.
-
3. Con por_ciudad = {} vacío, la línea por_ciudad["CDMX"] += 149.0 lanza KeyError. ¿Qué cambio hace que la misma línea funcione y deje {"CDMX": 149.0}?
defaultdict(float) llama a float() la primera vez que se usa una clave inexistente y crea el valor 0.0, al que luego se le suma 149.0. Asignar a get() es un SyntaxError, un set no admite índices y dict() es el mismo diccionario vacío.
-
4. Se quiere contar cuántos clientes compraron cada combinación de productos, sin que importe el orden, usando la combinación como clave de un diccionario. ¿Cuál de estas claves acepta Python?
Una clave debe ser hashable. frozenset es inmutable y hashable; set y list son mutables, y una tupla que contiene una lista tampoco es hashable: las tres lanzan TypeError: unhashable type.
-
5. Se recorren los 981 pedidos válidos (el CSV llega hasta el id 1000 y sus tres últimas filas son válidas) y se ejecuta ultimos.append(p.id) sobre ultimos = deque(maxlen=3). ¿Qué contiene list(ultimos) al terminar?
Con maxlen=3, cada append sobre una deque llena descarta el elemento del extremo opuesto, así que solo quedan los tres últimos ids en el orden en que llegaron.