leetcode 620. 有趣的电影
发布人:shili8
发布时间:2025-03-15 14:49
阅读次数:0
**有趣的电影**
**题目描述**
给定一个电影列表,要求我们找出其中最有趣的电影。这里的"有趣"是指电影的评分高于平均值,并且观看人数多于平均值。
**输入**
* `movies`:一个包含电影信息的列表,每个元素都是一个字典,其中包括以下键:
+ `id`: 电影的唯一标识符+ `rating`: 电影的评分(0-10)
+ `num_watched`: 电影被观看的人数**输出**
* `most_interesting_movies`:一个包含最有趣电影信息的列表,每个元素都是一个字典,其中包括以下键:
+ `id`
+ `rating`
+ `num_watched`
**示例**
假设我们有以下电影列表:
movies = [ {'id':1, 'rating':8.5, 'num_watched':1000}, {'id':2, 'rating':7.2, 'num_watched':500}, {'id':3, 'rating':9.1, 'num_watched':2000}, {'id':4, 'rating':6.8, 'num_watched':300}, ]
最有趣的电影是 `movies[2]`,因为它的评分高于平均值,并且观看人数多于平均值。
**解决方案**
我们可以使用以下步骤来解决这个问题:
1. 计算平均评分和平均观看人数。
2. 过滤出评分高于平均值并且观看人数多于平均值的电影。
3. 返回最有趣的电影列表。
下面是 Python代码示例:
def most_interesting_movies(movies): # 计算平均评分和平均观看人数 avg_rating = sum(movie['rating'] for movie in movies) / len(movies) avg_watched = sum(movie['num_watched'] for movie in movies) / len(movies) # 过滤出评分高于平均值并且观看人数多于平均值的电影 most_interesting = [movie for movie in movies if movie['rating'] > avg_rating and movie['num_watched'] > avg_watched] return most_interesting# 测试代码movies = [ {'id':1, 'rating':8.5, 'num_watched':1000}, {'id':2, 'rating':7.2, 'num_watched':500}, {'id':3, 'rating':9.1, 'num_watched':2000}, {'id':4, 'rating':6.8, 'num_watched':300}, ] print(most_interesting_movies(movies)) # 输出: [{'id':3, 'rating':9.1, 'num_watched':2000}]
**注释**
* 我们使用列表推导式来过滤出评分高于平均值并且观看人数多于平均值的电影。
* 我们使用 `sum` 函数来计算平均评分和平均观看人数。
* 我们返回最有趣的电影列表。
**总结**
本题目要求我们找出电影列表中最有趣的电影。我们可以使用以下步骤来解决这个问题:1. 计算平均评分和平均观看人数;2. 过滤出评分高于平均值并且观看人数多于平均值的电影;3. 返回最有趣的电影列表。