123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- '''
- 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()
|