''' sorted(iterable, key=None, reverse=False) Не пусть с методом списка .sort() - этот метод меняет сам список. Для сортировки словаря по значения используется следующий подход: for name in sorted(heroes, key=heroes.get): print(name, heroes[name]) Это чистая функция возвращает новый список. ''' def test_1(): my_list = ['123', 12, '5', 3, 53] print(sorted(my_list)) def test_2(): my_list = [1, 123, 12, 15, 10, 18] print(sorted(my_list, key=lambda x: (-len(str(x)), x))) def test_3(): my_list = [ (10, 10, 10), (8, 10, 12), (6, 12, 9), (10, 12, 14) ] s = sorted(my_list, key=lambda x: (-x[0], -x[2]), reverse=True) print(s[0]) def print_results(lst): '''Информация выводится по убыванию оценок, а в случае их равенства предметы должны выводиться в обратном алфавитном порядке без учета регистра.''' sorted_lst = sorted(lst, key=lambda x: (x[1], x[0].lower()), reverse=True) for i in sorted_lst: print(i[0], i[1]) def get_sort_lines(lst): 'Сортировка по длине отрезка, затем по координатом первой и второй точки' return sorted(lst, key=lambda x: (abs(x[1] - x[0]), x[0], x[1])) def print_goods(lst): 'Сортировка словаря по двум критериям' for item in sorted(lst, key=lambda x: (x['color'].lower(), -x['model'])): # print(f'Производитель: {item['make']}, модель: {item['model']}, цвет: {item['color']}') print('Производитель: ', item['make'], ', модель: ', item['model'], ', цвет: ', item['color'], sep='') def print_goods_new(lst): new_lst = [position.split(': ') for position in lst] sorted_lst = sorted(new_lst, key=lambda x: (-float(x[1]), x[0].lower())) for item in sorted_lst: print(f'{float(item[1]):.2f} - {item[0]}') def print_best_and_worst_laureate(dct): new_dict = {} for key, value in dct.items(): if value not in new_dict.keys(): new_dict[value] = 1 else: new_dict[value] += 1 sorted_list = sorted(new_dict.items(), key=lambda x: -x[1]) print(sorted_list[0][0], ', ',sorted_list[0][1], sep='') print(sorted_list[-1][0], ', ',sorted_list[-1][1], sep='') def print_order_rating(lst): new_dict = {} for driver in lst: if driver[0] not in new_dict.keys(): new_dict[driver[0]] = [driver[1]] else: new_dict[driver[0]].append(driver[1]) for key, value in new_dict.items(): new_dict[key] = sum(value)/len(value) new_list = [[key, value] for key, value in new_dict.items()] new_list = sorted(new_list, key=lambda x: (-x[1], x[0].lower())) for item in new_list: print(f'{item[0]} {item[1]}') def print_statistic(lst): new_dict = {} for autor in lst: if autor[0] not in new_dict.keys(): new_dict[autor[0]] = set() new_dict[autor[0]].add(autor[1]) else: new_dict[autor[0]].add(autor[1]) for key, value in new_dict.items(): new_dict[key] = len(value) new_list = sorted(new_dict.items(), key=lambda x: (-x[1], x[0].lower())) for item in new_list: print(f'Количество уникальных комментаторов у {item[0]} - {item[1]}') # print(new_list) # print(new_dict) # new_list = [] # for key, value in new_dict.items(): # new_list def set_test(): my_set = set() for i in range(5): my_set.add(i) for i in range(5): my_set.add(i) print(my_set) def main(): # test_1() # test_2() # test_3() # marks = [('English', 88), ('Science', 90), ('Maths', 97), ('Physics', 93), ('History', 82)] # marks = [('English', 88), ('Science', 100), ('Maths', 81), ('Physics', 100), ('History', 82), ('Music', 100)] # marks = [('english', 100), ('Science', 100), ('maths', 100), # ('Physics', 100), ('history', 100), ('Music', 100)] # print_results(marks) # lines = [(5, 6), (5, 4), (1, 0), (0, -1), (1, 2), (2, 1)] # print(get_sort_lines(lines)) # get_sort_lines(lines) """ models = [{'make': 'Nokia', 'model': 2, 'color': 'Black'}, {'make': 'Mi Max', 'model': 3, 'color': 'red'}, {'make': 'Samsung', 'model': 5, 'color': 'Yellow'}, {'make': 'Apple', 'model': 10, 'color': 'RED'}, {'make': 'Oppo', 'model': 9, 'color': 'Red'}, {'make': 'Huawei', 'model': 4, 'color': 'BLACK'}, {'make': 'Honor', 'model': 3, 'color': 'black'}, {'make': 'Nothing Phone', 'model': 7, 'color': 'Yellow'}] print_goods(models) """ """ laureates = {'За лучший фильм': 'Все везде и сразу', 'За лучшую музыку к фильму': 'На Западном фронте без перемен', 'За лучший звук': 'Топ Ган: Мэверик', 'За лучшие визуальные эффекты': 'Аватар: Путь воды', 'За лучший дизайн костюмов': 'Топ Ган: Мэверик', 'За лучшую операторскую работу': 'На Западном фронте без перемен', 'За лучший монтаж': 'Все везде и сразу', 'За лучший оригинальный сценарий': 'Все везде и сразу', 'За лучший фильм на иностранном языке': 'Все везде и сразу', } print_best_and_worst_laureate(laureates) """ """ drivers = [ ('Зина', 5), ('Зина', 3), ('Гермиона', 4), ('Гермиона', 4), ('александр', 4), ] print_order_rating(drivers) """ data = [ ('7', 'opushka'), ('1', 'opushka'), ('2', 'opushka'), ('3', 'opushka'), ('2', 'opushka'), ('1', 'opushka'), ('2', 'opushka'), ('5', 'opushka'), ('6', 'opushka'), ('6', 'opushka'), ] # print_statistic(data) # print(set_test.__code__) # print(set_test.__code__.co_varnames) # print(set_test.__code__.co_argcount) if __name__ == '__main__': main()