Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Codecademy Python课程:It';It’一般没关系_Python_List_Dictionary_Average - Fatal编程技术网

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
函数的参数时,调用is
lst
会让人困惑<对于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)