TelenkovDmitry 4 månader sedan
förälder
incheckning
56918eec5b
1 ändrade filer med 123 tillägg och 2 borttagningar
  1. 123 2
      courses/python_func/sort.py

+ 123 - 2
courses/python_func/sort.py

@@ -4,7 +4,13 @@ sorted(iterable, key=None, reverse=False)
 
 Не пусть с методом списка .sort() - этот метод меняет сам список.
 
+Для сортировки словаря по значения используется следующий подход:
 
+
+for name in sorted(heroes, key=heroes.get):
+    print(name, heroes[name])
+
+    
 Это чистая функция возвращает новый список.
 '''
 
@@ -43,6 +49,64 @@ 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]] = (new_dict[driver[0]] + driver[1])/2
+
+    new_list = [[key, value] for key, value in new_dict.items()]
+    new_list = sorted(new_list, key=lambda x: -x[1])
+    
+    for item in new_list:
+        print(f'{item[0]} {item[1]}')
+
+
+    print(new_list)
+
+    # sorted_list = sorted(new_dict, key=new_dict.get)
+
+    # print(sorted_list)
+
+    # for item in sorted_list:
+    #     print(item)
+
+    # for key, value in new_dict.items():
+    #     print(key, value)
+
+
+
+
 def main():
     # test_1()
     # test_2()
@@ -54,11 +118,68 @@ def main():
     #         ('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))
+    # 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 = [
+    ('Джек', 2),
+    ('Джек', 3),
+    ('Гермиона', 5),
+    ('Билл', 4),
+    ('Билл', 4),
+    ('Гермиона', 3),
+    ('Джек', 2),
+    ('ЯЯ', 5),
+    ('ФФФ', 5),
+    ('Билл', 4),
+    ('Укк', 4),
+    ('Билл', 3),
+    ('Джек', 2),
+    ('Джек', 2),
+    ('Гермиона', 5),
+    ('Билл', 2),
+    ('ФФФ', 4),
+    ('Билл', 3),
+    ('ФФФ', 3),
+    ('Джек', 2),
+    ('Джек', 1),
+    ('Гермиона', 5),
+    ('Билл', 2),
+    ('Курт', 5),
+    ('Билл', 3),
+    ]
+    
+    print_order_rating(drivers)
+    
 
 if __name__ == '__main__':
     main()