Алгоритм сортировки многомерного массива по нескольким критериям - PullRequest
0 голосов
/ 11 июня 2018

Предположим, у нас есть таблица с 6 столбцами (все целые, не отсортированные).Я хочу отсортировать это на основе 3 столбцов с приоритетом.Есть ли алгоритм для этого?

Я посмотрел таким образом:

data.sort(key=lambda x: (x[3], x[5], x[4]))

Но как это работает?Столбец 5 будет мешать таблице / многомерному массиву, отсортированному по столбцу 3?Или это мешает, только если атрибуты столбца 3 совпадают и поэтому сортируют столбец 5 под ним?

Если бы кто-то мог придумать существующий / новый алгоритм для этого, было бы здорово.Это похоже на известную проблему «Алгоритм создания сбалансированной команды на основе множества критериев».(Лучше, если алгоритм основан на Python)

1 Ответ

0 голосов
/ 12 июня 2018

Сложно понять, как вы хотите это отсортировать.Кортежи отсортированы в лексикографическом порядке.Это означает, что кортеж в формате Tuple [A, B, C] будет отсортирован сначала по A, затем по B и, наконец, по C.

Например, эти кортежи перечислены в порядке убывания:

(20, 0, 0)
(10, 100, 1000)
(10, 0, 2000)
(10, 0, 0)
(0, 5000, 0)
(0, 200, 3000)
(0, 100, 1000)

Порядок, который вы описываете, звучит так, как будто вы хотите выбрать верхний n после сортировки по первому элементу кортежа, а затем использовать второй элемент.Это более продвинутое, и я думаю, что намерение было бы более ясным, если вы сортируете свои вещи за несколько проходов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...