|
4 | 4 | class MapExercise: |
5 | 5 | @staticmethod |
6 | 6 | def rating(list_of_movies: list[dict]) -> float: |
7 | | - """ |
8 | | - !!Задание нужно решить используя map!! |
9 | | - Посчитать средний рейтинг фильмов (rating_kinopoisk) у которых две или больше стран. |
10 | | - Фильмы у которых рейтинг не задан или равен 0 не учитывать в расчете среднего. |
| 7 | + ratings = list( |
| 8 | + map( |
| 9 | + lambda movie: float(movie["rating_kinopoisk"]), |
| 10 | + filter( |
| 11 | + lambda movie: movie["country"].count(",") > 0 |
| 12 | + and movie["rating_kinopoisk"] |
| 13 | + and float(movie["rating_kinopoisk"]) > 0, |
| 14 | + list_of_movies, |
| 15 | + ), |
| 16 | + ) |
| 17 | + ) |
11 | 18 |
|
12 | | - :param list_of_movies: Список фильмов. |
13 | | - Ключи словаря: name, rating_kinopoisk, rating_imdb, genres, year, access_level, country |
14 | | - :return: Средний рейтинг фильмов у которых две или больше стран |
15 | | - """ |
16 | | - pass |
| 19 | + return sum(ratings) / len(ratings) |
17 | 20 |
|
18 | 21 | @staticmethod |
19 | 22 | def chars_count(list_of_movies: list[dict], rating: Union[float, int]) -> int: |
20 | | - """ |
21 | | - !!Задание нужно решить используя map!! |
22 | | - Посчитать количество букв 'и' в названиях всех фильмов с рейтингом (rating_kinopoisk) больше |
23 | | - или равным заданному значению |
24 | | -
|
25 | | - :param list_of_movies: Список фильмов |
26 | | - Ключи словаря: name, rating_kinopoisk, rating_imdb, genres, year, access_level, country |
27 | | - :param rating: Заданный рейтинг |
28 | | - :return: Количество букв 'и' в названиях всех фильмов с рейтингом больше |
29 | | - или равным заданному значению |
30 | | - """ |
31 | | - pass |
| 23 | + return sum( |
| 24 | + map( |
| 25 | + lambda movie: movie["name"].count("и"), |
| 26 | + filter( |
| 27 | + lambda movie: movie["rating_kinopoisk"] |
| 28 | + and float(movie["rating_kinopoisk"]) >= rating, |
| 29 | + list_of_movies, |
| 30 | + ), |
| 31 | + ) |
| 32 | + ) |
0 commit comments