Python 在2D列表中查找最高平均值

Python 在2D列表中查找最高平均值,python,list,loops,indexing,Python,List,Loops,Indexing,一个是30部不同的电影(电影名称),另一个是电影的收视率(所有收视率)。在评级列表中,我有五个不同的人作为一个列表提供的五个评级。我正在努力寻找收视率最高的电影,在所有人中平均收视率最高的电影。我知道我没有取平均值,但是从评分表中我知道有两部电影的总评分是25。所以我试着做了以下几点: highestrated = [] for i in range(30): totals.append(0) for j in range(30): ch = 0 for i in ra

一个是30部不同的电影(电影名称),另一个是电影的收视率(所有收视率)。在评级列表中,我有五个不同的人作为一个列表提供的五个评级。我正在努力寻找收视率最高的电影,在所有人中平均收视率最高的电影。我知道我没有取平均值,但是从评分表中我知道有两部电影的总评分是25。所以我试着做了以下几点:

highestrated = []
for i in range(30):
    totals.append(0)

for j in range(30):
    ch = 0
    for i in range(5):
        if all_ratings[i-1][j-1] == 0:
            ch = 1
    if ch == 0:
        for i in range(5):
            highestrated[j-1] = highestrated[j-1] + all_ratings[i-1][j-1]

for i in range(30):
    if highestrated[i-1] == 25:
        print("the highest rated movies are ",
              movie_names[i-1], highestrated[i-1])
然而,我得到了这个错误

highestrated[j-1]=highestrated[j-1] + all_ratings[i-1][j-1]
IndexError: list index out of range

totals.append(0)
更改为
highestrated.append(0)
解决了我的问题

这里有一个你正在尝试的清晰示例,它可能会帮助你

假设你从这样一个结构开始:

ratings\u列表={
“哈利波特”:[4,5,3,5,2],
“领主”:[5,5,5,4,3,6],
...
}
要获得平均值,您可以执行以下操作:

评级\u平均值={
电影:sum(收视率)/len(收视率)
对于电影,收视率列表中的收视率。项目()
}
为了获得最高评分,我们将对字典进行排序:

sorted\u ratings\u average{
电影:收视率
对于电影,分级按排序(
评分平均值。项目(),
#这是电影名称和分级的元组
key=lambda额定值对:额定值对[1],
#反转以获得顶部的最高点
反向=真,
)
}
现在打印出前五个

for movie, rating in sorted_ratings_average.items()[:5]:
    print(f"{movie}: {rating}")

highestrated
开始时为空。你是想初始化它吗?是的,这是正确的尝试
highestrated=[0]*30
。这很好,谢谢!如何提交已解决的问题?注意您编写的
totals.append(0)
not
highestrated.append(0)
Great!我想知道如果有两个列表,
评级列表=[4,5,3,5,2],[5,5,5,4,3],
电影名称=[“哈利波特”、“指环王”、“汽车”、“海湾手表”、“朱曼基”]
@dojomaker你可以通过将列表压缩在一起来创建一个口述(只要它们的长度相同):
ratings\u dict=dict(zip(电影名称、分级列表))