Codecademy Python课程:It';It’一般没关系
我一直在做这个练习:Codecademy Python课程:It';It’一般没关系,python,list,dictionary,average,Python,List,Dictionary,Average,我一直在做这个练习: tyler = { "name": "Tyler", "homework": [0.0, 87.0, 75.0, 22.0], "quizzes": [0.0, 75.0, 78.0], "tests": [100.0, 100.0] } # Add your function below! def average(lst): for item in lst: if lst[item] == float:
tyler = {
"name": "Tyler",
"homework": [0.0, 87.0, 75.0, 22.0],
"quizzes": [0.0, 75.0, 78.0],
"tests": [100.0, 100.0]
}
# Add your function below!
def average(lst):
for item in lst:
if lst[item] == float:
print sum(lst[item]) / len(lst[item])
average(tyler)
为什么我不能把三个平均数都打印出来?
循环到达字典中的字符串键时是否中断?
我怎样才能只打印出浮动平均值
if lst[item] == float:
这一行在字典中查找lst[item]——但是字典中的所有值都是字符串或列表。因此,上述逻辑表达式的值始终为False
相反,请使用:
if type(lst[item]) == list:
我还认为,如果要迭代字典,最好不要称它为“lst”
def average(lst):
return sum(lst)/len(lst)
for key, value in tyler.iteritems():
if type(value) == list:
print average(value)
你可以做:
def average(lst):
for item in lst:
if item != 'name':
print sum(lst[item]) / len(lst[item])
这意味着只要项目不是“name”
,您就可以计算并打印平均值。您已将变量命名为lst
,但它实际上是一个字典。因此,您可以按如下方式更新代码以使其工作(更具可读性):
您可能希望检查当前项是否为列表。你可以用函数来做,就像这样
def average(lst):
for item in lst:
if isinstance(lst[item], list):
print sum(lst[item]) / len(lst[item])
输出
51.0
100.0
46.0
记住,我们不能保证字典中键的顺序。因此,平均值的打印顺序可能会令人困惑。这里是您期望的
tyler = {
"name": "Tyler",
"homework": [0.0, 87.0, 75.0, 22.0],
"quizzes": [0.0, 75.0, 78.0],
"tests": [100.0, 100.0]
}
# Add your function below!
def average(lst):
for item in lst:
if type(lst[item]) == list:
print sum(lst[item]) / len(lst[item])
average(tyler)
我想Codecademy也有一个问答论坛?不是吗?钥匙不是浮动的。因此if语句总是false。
tyler
不是一个列表,所以当它是average
函数的参数时,调用islst
会让人困惑<对于lst中的项,code>生成dict
的键。您认为lst
在这里是什么?也许您想为tyler
字典中的每个值调用average
?是的,那lst[item]==float
应该做什么float
是一个类型对象,您的值中没有一个是类型,它们都是浮点数列表。由于我评论的内容不再存在,所以我完全删除了我的评论。你也可以这样做。它会收拾得整整齐齐的:)
tyler = {
"name": "Tyler",
"homework": [0.0, 87.0, 75.0, 22.0],
"quizzes": [0.0, 75.0, 78.0],
"tests": [100.0, 100.0]
}
# Add your function below!
def average(lst):
for item in lst:
if type(lst[item]) == list:
print sum(lst[item]) / len(lst[item])
average(tyler)