import pickle shows = {'Секретные материалы': {'Жанр':'фантастика', 'Рейтинг':0.9},'Ведьмак': {'Жанр':'фэнтази', 'Рейтинг':0.95}, 'Клан Сопрано': {'Жанр':'криминал','Рейтинг':'0.8'},'24': {'Genre':'драма', 'Rating': '0.75'}, 'Черное зеркало': {'Жанр':'фантастика', 'Рейтинг':0.98},'Во все тяжкие':{'Жанр': 'криминал', 'Рейтинг':'0.85'}, 'Игра престолов':{'Жанр':'фэнтази','Рейтинг':0.87},'Карточный домик':{'Genre':'драма', 'Rating':0.82}, 'Рик и Морти':{'Жанр':'фантастика','Рейтинг':1}} def gen_names (genres): # функция : serials = {} # словарь сериалов ratings = [] # сбор рейтинга quantity = 0 # переменная для количества сериалов for k, v in shows.items(): # создаюм цикл для ключей и значений в shows try: # используем исключения if v['Жанр'] == genres and type(v['Рейтинг']) != float: # если ключ равено жанру; если значение не равно флоат quantity += 1 # +1 к переменной number_ratings = float(v['Рейтинг']) # подводим к float ratings.append(number_ratings) # добавляем в список ratings serials[k] = v # запись в словарь elif v['Жанр'] == genres: # тоже самое, но без уточнения типа значения ratings.append(v['Рейтинг']) quantity += 1 serials[k] = v except KeyError: # исключаем ошибку и меняем ключ if v['Genre'] == genres: quantity += 1 ratings.append(v['Rating']) serials[k] = v avg_rating = sum(ratings) / quantity file = open(genres + '.dat', 'wb') pickle.dump(serials, file) file.close() resik = print('Жанр: {}, Кол-во сериалов: {},'.format(genres,quantity) + 'Рейтинг: {}'.format(avg_rating)) return resik g_list = [] for k, v in shows.items(): try: g_list.append(v['Жанр']) except: g_list.append((v['Genre'])) best_genres = set(g_list) for i in best_genres: gen_names(i)
Вот что выводит терминал: