Найти - Пользователи
Полная версия: Прошу помочь с решением
Начало » Python для новичков » Прошу помочь с решением
1 2
i4etverg_ex
Всем привет.
Прошу подскажите как вычислить средний рейтинг жанра фантастика используя 2 словаря.

shows = {'Секретные материалы': 'фантастика', 'Ведьмак': 'фэнтази', 'Клан Сопрано': 'криминал', '24': 'драма', 'Черное зеркало':
'фантастика', 'Во все тяжкие': 'криминал', 'Игра престолов': 'фэнтази', 'Карточный домик': 'драма', 'Рик и Морти': 'фантастика'}

ratings = {'Секретные материалы': 0.9, 'Ведьмак': 0.95, 'Клан Сопрано': 0.8, '24': 0.75, 'Черное зеркало': 0.98, 'Во все тяжкие': 0.85, 'Игра престолов': 0.87,
'Карточный домик': 0.82, 'Рик и Морти': 1}
AD0DE412
 from statistics import mean
print(mean([ratings[i] for i in ratings if shows[i] == 'фантастика']))
i4etverg_ex
AD0DE412
этот вариант не работает( либо я ещё не знаком с from statistics и import mean)
загрузить фото
AD0DE412
i4etverg_ex
этот вариант не работает
да неужль .. отож
 In [2]: shows = {'Секретные материалы': 'фантастика', 'Ведьмак': 'фэнтази', 'Кл 
   ...: ан Сопрано': 'криминал', '24': 'драма', 'Черное зеркало':               
   ...:          'фантастика', 'Во все тяжкие': 'криминал', 'Игра престолов': ' 
   ...: фэнтази', 'Карточный домик': 'драма', 'Рик и Морти': 'фантастика'}      
   ...:                                                                         
   ...: ratings = {'Секретные материалы': 0.9, 'Ведьмак': 0.95, 'Клан Сопрано': 
   ...:  0.8, '24': 0.75, 'Черное зеркало': 0.98, 'Во все тяжкие': 0.85, 'Игра  
   ...: престолов': 0.87,                                                       
   ...:            'Карточный домик': 0.82, 'Рик и Морти': 1}                   
                                                                                
In [3]: from statistics import mean                                             
   ...: print(mean([ratings[i] for i in ratings if shows[i] == 'фантастика']))  
0.96       
ну и ладно .. тоже мн .. пдумаещ ..
i4etverg_ex
AD0DE412
from statistics import mean
print(mean([ratings for i in ratings if shows == ‘фантастика’]))
Работает, спасибо большое) я имел ввиду, что from statistics import mean не понимаю и не изучал.
Возможно для чайников есть более длинный код для решения, но с простыми функциями для новичков.
FishHook
i4etverg_ex
Безусловно, но вам надо предоставить весь математический аппарат.
Давайте начнем с того, что “как вычислить средний рейтинг…”. Забудем про два словаря. Допустим, у нас есть такие данные:
 lst = [0.8, 1.1, 0.97, 0.65, 0.7]

ваша задача - вычислить среднее значение элементов этого списка
i4etverg_ex
FishHook
i4etverg_exБезусловно, но вам надо предоставить весь математический аппарат. Давайте начнем с того, что “как вычислить средний рейтинг…”. Забудем про два словаря. Допустим, у нас есть такие данные:
Сложить и разделить на количество , получим среднее 0.844.
По логике, как я думаю необходимо выделить из первого списка фильмы с жанром фантастика, затем каким-то образом взять из второго списка их рейтинг сложить и разделить на количество.
for i in ratings:
if shows[i] == 'фантастика':
Дальше ступор
FishHook
i4etverg_ex
Вы пришли за помощью, и я вам помогу. Но вы должны активно участвовать. Я выше попросил вас написать код. Давайте вы не словами мне расскажете, как будете вычислять среднее значение списка, а дадите решение в виде кода. Так мы с вами шаг за шагом получим нужное решение.
i4etverg_ex
FishHook
i4etverg_exВы пришли за помощью, и я вам помогу. Но вы должны активно участвовать. Я выше попросил вас написать код. Давайте вы не словами мне расскажете, как будете вычислять среднее значение списка, а дадите решение в виде кода. Так мы с вами шаг за шагом получим нужное решение.
Хорошо, спасибо Вам.
lst = [0.8, 1.1, 0.97, 0.65, 0.7]
a = sum(lst) / len(lst)
print(a)
Я бы сделал так.
FishHook
Отлично! Давайте теперь поместим ваш код в функцию, чтобы отвязать его от конкретных данных и легко переиспользовать. Тут я помогу.

   
def avgList(l):
    return sum(l) / len(l)
  
lst = [0.8, 1.1, 0.97, 0.65, 0.7]
print(avgList(lst))
  
lst = [0.18, 0.1, 0.77]
print(avgList(lst))

полдела сделано. Мы умеем вычислять среднее для любого списка. Значит, если у нас будет вот такая структура:
 s = {'фантастика': [0.9, 0.6, 0], 'драма': [0, 0.5, 0.6]}
мы сможем пройтись по всем ключам и для каждого применим фукцию avgList. Логично?
Ваша следующая задача создать такую структуру. Будем делать это поэтапно. Вам надо получить пустой словарь s. То есть пройти по всем значениям словаря shows и создать новый словарь вида
 s = {'фантастика': [], 'драма': []}





This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB