Как на Python Сделать свою сортировку? Добрый день.
Уже разобрался как в Python сделать сортировку элементов.
Теперь возник следующий вопрос. А как задать свой порядок сортировки.
Например есть ряд элементов "a1b2c"
Где a -самый маленький , а c -самый большой.
Как сделать преобразование строки "c2b1a", в тот, в a1b2c?
То есть нужна сортировка строки y = sorted(list(x)) , но по своему критерию.
Как ее сделатЬ?
Например есть игральные карты у них такой порядок 23456789TJQKA по возрастанию.
Нужно чтобы программа из набора "A926K " сделала набор "269KA" по возрастанию.
Прочитал что в Python существует сортировка по ключу. То есть для любого вида данных можно функцией формировать ключ, по которому и будет производиться сортировка. Но как это сделатЬ?

21 Авг 2019 в 06:25
275 +1
0
Ответы
1

Для того чтобы задать свой порядок сортировки в Python, можно использовать аргумент key функции sorted(). В качестве значения key можно указать функцию, которая будет возвращать порядковый номер элемента в вашей последовательности.

Например, если у нас есть последовательность "cba" и мы хотим отсортировать ее в порядке "abc", мы можем написать следующий код:

x = "cba"
custom_order = {'a': 0, 'b': 1, 'c': 2}
sorted_x = sorted(x, key=lambda i: custom_order[i])
print(''.join(sorted_x))

Для вашего примера с набором игральных карт:

x = "A926K"
custom_order = {'2': 0, '3': 1, '4': 2, '5': 3, '6': 4, '7': 5, '8': 6, '9': 7, 'T': 8, 'J': 9, 'Q': 10, 'K': 11, 'A': 12}
sorted_x = sorted(x, key=lambda i: custom_order[i])
print(''.join(sorted_x))

Этот код сортирует вашу строку по заданному вами порядку.

20 Апр 2024 в 13:18
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир