Модуль 9.7 Аргумент key для сортировки по ключу.
На вход программы поступает список наименований рек, записанных в одну строчку через пробел. Необходимо отсортировать этот список в порядке убывания длин названий. Результат вывести в одну строчку через пробел.
# считываем список из входного потока и превращаем его в список строк lst_in = input().strip().split() # сортируем список в порядке убывания длин строк sorted_lst = sorted(lst_in, key=lambda x: len(x), reverse=True) # выводим отсортированный список в одну строку через пробел print(' '.join(sorted_lst))
На вход программы поступает строка в формате:
предмет_1=вес_1
…
предмет_N=вес_NВеса предметов заданы целыми числами. Необходимо на основе этих данных сформировать словарь и, затем, на основе этого словаря сформировать список предметов по убыванию их веса. (В списке должны находиться только наименования предметов без их весов).
Отобразить полученный результат в виде строки с названиями через пробел.
P. S. Для считывания списка целиком в программе уже записаны начальные строчки.
import sys # считывание списка из входного потока lst_in = list(map(str.strip, sys.stdin.readlines())) # создаем словарь, где ключами являются названия предметов, а значениями - их веса d = dict(s.split("=") for s in lst_in) # сортируем ключи словаря по убыванию их значений (весов) res = sorted(d, key=lambda x: int(d.get(x)), reverse=True) # выводим результат в виде строки через пробел print(*res)
Известно, что порядок нот, следующий: до, ре, ми, фа, соль, ля, си. На вход программы поступает строка с набором этих нот, записанных через пробел. Необходимо сформировать список из входной строки с нотами, отсортированными указанным образом. Результат вывести в виде строки из нот, записанными через пробел.
# Список всех нот в нужном порядке notes_order = ["до", "ре", "ми", "фа", "соль", "ля", "си"] # Считываем строку с нотами из входного потока notes_str = input().strip() # Разбиваем строку на список нот notes_list = notes_str.split() # Сортируем список нот в соответствии с заданным порядком sorted_notes = sorted(notes_list, key=lambda note: notes_order.index(note)) # Выводим результат в виде строки из нот, разделенных пробелом print(" ".join(sorted_notes))
Имеется таблица с данными, представленная в формате:
Номер;Имя;Оценка;Зачет
1;Иванов;3;Да
2;Петров;2;Нет
…
N;Балакирев;4;ДаЭти данные необходимо представить в виде двумерного (вложенного) кортежа. Все числа должны быть представлены как целые числа. Затем, отсортировать данные так, чтобы столбцы шли в порядке:
Имя;Зачет;Оценка;Номер
Реализовать эту операцию с помощью сортировки. Результат должен быть представлен также в виде двумерного кортежа и присвоен переменной с именем t_sorted.
Программа ничего не должна выводить на экран, только формировать двумерный кортеж с переменной t_sorted.
P. S. Для считывания списка целиком в программе уже записаны начальные строчки.
import sys # считывание списка из входного потока (не меняйте переменную lst_in в программе) lst_in = list(map(str.strip, sys.stdin.readlines())) # функция для извлечения нужных данных и преобразования их в нужный формат def g(list): # разбиение строки на элементы по разделителю ";" x = list.split(";") # проверка, что первый являются числами if (x[0].isdigit()): # возвращение элементов в нужном порядке и в нужном формате return x[1], x[3], int(x[2]), int(x[0]) else: # возвращение элементов в нужном порядке и в нужном формате return x[1], x[3], x[2], x[0] # преобразование исходного списка в двумерный кортеж с помощью функции g t_sorted = tuple([tuple(g(i)) for i in lst_in])
Известно, что звания военнослужащих имеют следующий порядок:
рядовой, сержант, старшина, прапорщик, лейтенант, капитан, майор, подполковник, полковник
На вход поступает список военнослужащих в формате:
имя_1=звание_1
…
имя_N=звание_NНеобходимо входные данные представить в виде вложенного списка вида:
[[‘имя_1’, ‘звание_1’], [‘имя_2’, ‘звание_2’], …, [‘имя_N’, ‘звание_N’]]
Этот список присвоить переменной с именем lst. Затем, отсортировать его по возрастанию званий.
Выводить на экран ничего не нужно, только сформировать список и указать на него переменную lst.P. S. Для считывания списка целиком в программе уже записаны начальные строчки.
import sys # считывание списка из входного потока (переменную lst_in не менять) lst_in = list(map(str.strip, sys.stdin.readlines())) # задаем порядок званий в виде строки order = 'рядовой, сержант, старшина, прапорщик, лейтенант, капитан, майор, подполковник, полковник' # создаем вложенный список, разделяя имена и звания в каждой строке lst = [s.split('=') for s in lst_in] # сортируем список lst по индексу звания, определенному через find() и порядок званий lst = sorted(lst, key=lambda x: order.find(x[1]))
Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы