Я пытаюсь отсортировать список кортежей, где есть определенные индексы кортежей, которые содержат None. В этом случае кортежам с None в указанном c расположении индекса нужно дать приоритет над другими не-None значениями в списке кортежей.
Так, например, если у меня есть список, который выглядит следующим образом:
[
(3.4, 43, None),
(5345.6, 42, None),
(43.24, 25, None),
(323.4, 433, None),
(5.6, 42, None),
(4.4, 235, None),
(None, None, 'Hello'),
(5.6, None, None),
(None, 235, None),
]
И я хочу, чтобы мой окончательный список выглядел следующим образом (в основном выполняется "SELECT * FROM table ORDER BY column1, column3;")
[
(None, 235, None),
(None, None, 'Hello'),
(3.4, 43, None),
(4.4, 235, None),
(5.6, 42, None),
(5.6, None, None),
(43.24, 25, None),
(323.4, 433, None),
(5345.6, 42, None),
]
По состоянию на сейчас я использую
sortedSelectedResult = sorted(selectedResult,key=itemgetter(*indexSortOrderList))
, где indexSortOrderList - это список, в котором есть список порядка индекса, по которому необходимо сортировать список кортежей. Но в этом методе Nones случайно помещаются в список. Мой текущий результат выглядит следующим образом: где indexSortOrder = [0,2] (то есть) сортировка по первому столбцу, а затем по третьему столбцу:
[(3.4, 43, None),
(5345.6, 42, None),
(43.24, 25, None),
(323.4, 433, None),
(5.6, 42, None),
(4.4, 235, None),
(None, None, 'Hello'),
(5.6, None, None),
(None, 235, None)]
Я попытался просмотреть operator.itemgetter и изменить применяемую функцию в моем случае использования, но у меня тоже проблемы с этим ..