查找字典的平均等级

2024-09-27 21:23:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图写一个叫做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

平均成绩({“Shana”:[100,90,80],“Jody”:[100,70,80,90,100],“Mike”: [100,100,20]})

当我这样做时,我得到{'Shana':90.0}当我想要{'Jody':88,'Mike':73,'Shana':90}


Tags: 函数for字典代表整数学生数值平均值
3条回答

这应该做到:

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语句结束之前编写的

你应该在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]}))

你的报税表位置错了。在您的例子中,return语句在for循环中,因此return语句返回的dict是第一个元素,而不是整个dict

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

相关问题 更多 >

    热门问题