# 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))