查找字典的平均等级

时间:2019-04-10 20:00:41

标签: python python-3.x dictionary

我正在尝试编写一个名为averageGrades的函数,该函数将字典与代表学生和 代表他们成绩的值。该函数应返回一个新字典,其中的键代表学生 和代表其平均成绩的值。平均值应为整数,且应被截断

我设法写了一些代码,给了我一个平均值,但是并没有遍历列表...

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

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

当我这样做^我想要{'乔迪':88,'迈克':73,'莎娜':90}时得到{'Shana':90.0}

3 个答案:

答案 0 :(得分:3)

您的退货单位置放错了位置。在您的情况下,return语句位于for循环内,因此return语句将返回具有第一个元素的字典,而不是整个字典。尝试以下代码

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

答案 1 :(得分:1)

这应该做:

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
    ^^^^^

缩进很重要。

您的函数在第一个循环处停止,因为在return语句结束之前写入了for语句

答案 2 :(得分:0)

您应该在for循环之外返回averageDict。如果它在for循环内,则return语句将在您不需要的第一次迭代之后返回。尝试如下。

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]}))