# Con las estructuras de datos es muy normal tener elementos anidados alumnos = [{ "nombre": "Ana", "email": "ana@ana.com", "notas": [{"asignatura": "Python", "nota": 6}, {"asignatura": "Java", "nota": 8}, {"asignatura": "C#", "nota": 5}] }, { "nombre": "Eva", "email": "eva@eva.com", "notas": [{"asignatura": "Python", "nota": 8}, {"asignatura": "Java", "nota": 1}, {"asignatura": "C#", "nota": 5}] }, { "nombre": "Pep", "email": "pep@pep.com", "notas": [{"asignatura": "Python", "nota": 4}, {"asignatura": "Java", "nota": 5}, {"asignatura": "C#", "nota": 5}] }] # En primer lugar estoy recorriendo la lista de alumnos for alumno in alumnos: print("Alumno: ", alumno["nombre"]) total = 0 # Recorro la lista que está en la propiedad 'notas' for nota in alumno["notas"]: total += nota["nota"] # recorro el diccionario de cada una de las notas for clave, valor in nota.items(): print(clave, valor) print("Media", total / len(alumno["notas"])) print("-" * 20) # En primer lugar estoy recorriendo la lista de alumnos for alumno in alumnos: print("Alumno: ", alumno["nombre"]) total = 0 # Recorro la lista que está en la propiedad 'notas' for nota in alumno["notas"]: total += nota["nota"] # recorro el diccionario de cada una de las notas for clave, valor in nota.items(): print(clave, valor) print("Media", total / len(alumno["notas"])) print("-" * 20) # SI quisiera saber la media de notas de cada asignatura ¿Cómo lo haría? # Creo un diccionario cuya clave sea la asignatura y el valor las notas # Primero creo un diccionario vacío asignaturas={} # Recorro los alumnos for alumno in alumnos: # Recorro las asignaturas de los alumnos for asignatura in alumno["notas"]: nombre=asignatura["asignatura"] # capturo el nombre nota=asignatura["nota"] # capturo la nota print(nombre,nota) # Imprimo para probar # Compruebo si es la primera vez que tengo esta asignatura # Si es la primera vez no está en el diccionario if nombre not in asignaturas: asignaturas[nombre]=[] # entonces me creo una lista vacía # Añado la nota a esa lista asignaturas[nombre].append(nota) # Tengo un diccionario que he creado yo con la clave el nombre de la asignatura # Los valores las notas de cada asignatura print(asignaturas) # Teniendo ese diccionario sacar la media es trivial for nombre,notas in asignaturas.items(): print(nombre,sum(notas)/len(notas))