0
votes

Trouver une qualité moyenne des dictionnaires

J'essaie d'écrire une fonction appelée, moyenne grades, qui prend dans un dictionnaire avec les clés représentant les étudiants et valeurs représentant leurs notes. La fonction devrait renvoyer un nouveau dictionnaire avec les clés représentant les étudiants et des valeurs représentant une moyenne de leurs notes. La moyenne devrait être une INT et doit être tronquée

J'ai réussi à écrire un peu de code, qui me donne une valeur moyenne, mais cela ne fait pas partie de la liste ... P>

def averageGrades(diction):
    avgDict = {}
    for k, v in diction.items():
        # v is the list of grades for student k
         avgDict[k] = sum(v)/ float(len(v))
         return avgDict


3 commentaires

NE PAS RETENIR AVGDICT à l'intérieur de la boucle; Il n'inclut que ce qu'il a traité à ce point (c'est-à-dire le premier élément).


Pourriez-vous imprimer diction clés et valeurs?


@karl Vous ne devriez pas changer le contenu d'aucune question. Si vous voulez vraiment supprimer, puis soulevez un drapeau / supprimez la question.


3 Réponses :


1
votes

Ceci devrait faire:

def averageGrades(diction):
    avgDict = {}
    for k, v in diction.items():
        # v is the list of grades for student k
         avgDict[k] = sum(v)/ float(len(v))
    return avgDict
    ^^^^^


0 commentaires

3
votes

Votre position de déclaration de retour est égarée. Dans votre cas, la déclaration de retour est à l'intérieur de la boucle pour la boucle, la déclaration de retour renvoie donc dict avec le premier élément, plutôt que la dicte entière. Essayez le code suivant

def averageGrades(diction):
    avgDict = {}
    for k, v in diction.items():
        # v is the list of grades for student k
         avgDict[k] = sum(v)/ float(len(v))
    return avgDict


0 commentaires

0
votes

Vous devez retourner votre moyenne en dehors de votre boucle. Si c'est à l'intérieur de la boucle de la boucle, la déclaration de retour reviendra après la première itération que vous ne voulez pas. Essayez comme suit.

def averageGrades(diction):
    avgDict = {}
    for k, v in diction.items():
        # v is the list of grades for student k
         avgDict[k] = sum(v)/ float(len(v))
    return avgDict

print(averageGrades({"Shana": [100, 90, 80], "Jody": [100, 70, 80, 90, 100], "Mike": [100, 100, 20]}))


0 commentaires