错误:- 解包的值太多(预期为 2)python 函数

san*_*eni 0 python

我的代码:-

Videos10k=[{'title': '', 'titleWords': ['...','...'], 'titleLength': 10, 'likes': 86, 'disLikes': 5, 'views': 2202, 'creator': '...', 'description': '...'}]
def getavg(number, array=[]):
    views_avg = 0
    for idx, Video in array:
        views = Video["views"]
        views_avg = views_avg + views

    views_avg = views_avg / len(array)
    print("Average views for " + number + " " + views_avg)


getavg("10k", Videos10k)
Run Code Online (Sandbox Code Playgroud)

我收到此错误。错误:-

在 idx 的 getavg 中,数组中的视频:ValueError:要解压的值太多(预期为 2)

puh*_*huk 6

您需要仅使用 Video 而不是使用 idx、Video 获取数组中的项目

Videos10k=[{'title': '', 'titleWords': ['...','...'], 'titleLength': 10, 'likes': 86, 'disLikes': 5, 'views': 2202, 'creator': '...', 'description': '...'}]
def getavg(number, array=[]):
    views_avg = 0
    for Video in array:
        views = Video["views"]
        views_avg = views_avg + float(views)

    views_avg = views_avg / len(array)
    print("Average views for " + str(number) + " " + str(views_avg))
Run Code Online (Sandbox Code Playgroud)

或者你可以改成这样

for idex, Video in enumerate(array):
Run Code Online (Sandbox Code Playgroud)


小智 5

enumerate 函数给出索引号。

更改您的代码,如下所示

for idx, Video in enumerate(array):
Run Code Online (Sandbox Code Playgroud)

  • 只是要提一下,实际上“idx”从未在代码中的其他任何地方使用过,即它是多余的。 (2认同)