Soluciones diccionarios y tuplas

alumnos = {
    "Ana": [8, 6, 10],
    "Luis": [5, 6, 7],
    "Marta": [9, 8, 9],
    "Eva": [9, 8, 9],

}
# Esto no se pedía, pero si queremos añadir notas personalizadas a cada alumno lo podemos hacer así
notasnuevas = [6, 7, 4, 8]
# Para guardar el que tenga la media más alta. Necesitamos la media para saber el valor
# y primerodelaclase para el nombre
mediaprimero = 0
primerodelaclase = ""
# recorrer un diccionario
for alumno, notas in alumnos.items():
    media = sum(notas) / len(notas)
    print(f"El alumno {alumno} tiene una nota media de {media:.2f}")
    if media > mediaprimero:
        mediaprimero = media
        primerodelaclase = alumno
    notas.append(notasnuevas.pop())
print("El primero de la clase es ", primerodelaclase)  #

# No es recomendable. Por varias cosas, una, si añado alumnos ya no funciona
# Si tengo muchos alumnos se me juntan demasiadas líneas
# Y no vale decir 'Así pongo una nota individualizada' ;)
alumnos["Ana"].append(3)
alumnos["Luis"].append(3)
alumnos["Marta"].append(3)

alumnos.keys()  # Las claves "Ana","Luis"...
alumnos.values()  # Los valores [8, 6, 10],...
alumnos.items()  # Los pares clave valor ("Ana",[8, 6, 10])....

alumnos  # python me devuelve alumnos.keys()

inventario = {
    "frutas": ["manzana", "pera", "plátano"],
    "verduras": ["zanahoria", "brócoli"],
    "bebidas": ["agua", "zumo"]
}

# Añade "sandía" a la categoría de frutas.
inventario["frutas"].append("sandía")
print(inventario)
# Imprime todos los productos (uno por línea).
for productos in inventario.values():
    for producto in productos:
        print(producto)

# Cuenta cuántos productos hay en total.
numproductos = 0
for productos in inventario.values():
    numproductos += len(productos)
print(numproductos)

# Diccionario donde cada cliente tiene una lista de pedidos (cada pedido es un dict)
clientes = {
    "Juan": [{"producto": "Libro", "precio": 20}, {"producto": "Lápiz", "precio": 2}],
    "Ana": [{"producto": "Cuaderno", "precio": 5}],
    "Luis": [{"producto": "Tablet", "precio": 200}, {"producto": "Funda", "precio": 15}]
}


def total_gastado(cliente, datos):  # Nos devuelve cuanto ha gastado cada cliente en total
    pedidos = datos[cliente]
    total = 0
    for pedido in pedidos:
        total += pedido["precio"]
    return total
def total_gastado_c(cliente, datos):
    return sum([pedido["precio"] for pedido in datos[cliente]])

def productosPorCliente(
        datos):  # nos devuelve un diccionario donde la clave es el nombre del cliente y el valor es el número de productos
    resultado = {}
    for clave, valor in datos.items():
       resultado[clave] = len(valor)
    return resultado

def productosPorCliente_c(
        datos):  # nos devuelve un diccionario donde la clave es el nombre del cliente y el valor es el número de productos
    return {clave:len(valor) for clave, valor in datos.items()}

# Para saber si un diccionario ya tiene una clave usamos ‘in’ como en las listas

# if "Ana" in clientes:
print(total_gastado("Luis", clientes))
print(total_gastado_c("Luis", clientes))
print(productosPorCliente(clientes))
print(productosPorCliente_c(clientes))

Publicado por

Juan Pablo Fuentes

Formador de programación y bases de datos