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