votaciones = [ { "votante": "Juan", "votos": [ {"participante": "Ana", "puntos": 5}, {"participante": "Pedro", "puntos": 3} ] }, { "votante": "Marta", "votos": [ {"participante": "Ana", "puntos": 4}, {"participante": "Luis", "puntos": 2} ] }, { "votante": "Pedro", "votos": [ {"participante": "Ana", "puntos": 3}, {"participante": "Luis", "puntos": 5} ] } ] # crear una función que nos devuelva una lista de participantes ordenada de # más votos a menos votos # para cada participante el número de votos que tiene # ¿Puedo imprimir cada participante con su voto? # Lo tengo que guardar en alguna parte: en un diccionario def listaVotosRedundante(votaciones): resultado = {} for votacion in votaciones: # print(votacion["votos"]) for voto in votacion["votos"]: resultado[voto["participante"]] = 0 print(resultado) for votacion in votaciones: # print(votacion["votos"]) for voto in votacion["votos"]: resultado[voto["participante"]] += voto["puntos"] print(resultado) return sorted(resultado,key=resultado.get,reverse=True) def listaVotos(votaciones): # Guardo los datos en un diccionario resultado = {} # recorro las votaciones for votacion in votaciones: # Dentro de las votaciones recorro los votos for voto in votacion["votos"]: # Si el participante ya lo tengo en el diccionario sumo los puntos if voto["participante"] in resultado: resultado[voto["participante"]] += voto["puntos"] else: # Si no está lo creo con los puntos de esta votación # No puedo sumar los puntos si no existe de antes resultado[voto["participante"]] = voto["puntos"] # Ordeno las claves del diccionario (que son los participantes) por su valor (que son los votos) return sorted(resultado, key=resultado.get, reverse=True) print(listaVotos(votaciones)) # Crear una función que nos devuelva un diccionario con # la clave el nombre del votante y el valor la media de sus votos # recorrer todos los votantes def mediaVotos(votaciones): votantes={} # al final de lo que ponga aquí en mi diccionario tendré # el nombre de los votantes y de momento ponemos 0 for votacion in votaciones: suma=0 # Sumo todos sus puntos for voto in votacion["votos"]: suma+=voto["puntos"] # la media es la suma divido entre el número de votos votantes[votacion["votante"]] = suma/len(votacion["votos"]) return votantes print(mediaVotos(votaciones))