Python 在2D列表中查找最高平均值
一个是30部不同的电影(电影名称),另一个是电影的收视率(所有收视率)。在评级列表中,我有五个不同的人作为一个列表提供的五个评级。我正在努力寻找收视率最高的电影,在所有人中平均收视率最高的电影。我知道我没有取平均值,但是从评分表中我知道有两部电影的总评分是25。所以我试着做了以下几点: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
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)
nothighestrated.append(0)
Great!我想知道如果有两个列表,评级列表=[4,5,3,5,2],[5,5,5,4,3],
和电影名称=[“哈利波特”、“指环王”、“汽车”、“海湾手表”、“朱曼基”]
@dojomaker你可以通过将列表压缩在一起来创建一个口述(只要它们的长度相同):ratings\u dict=dict(zip(电影名称、分级列表))