我正在尝试编写一个名为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}
答案 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]}))