У меня есть список списков из трех строк в Python, например,
m = [['pig', 'quartz', '1'], ['pork', 'nails', '1'], ...]
и я хочу отсортировать его по индексу 0, затем по индексу 2 в обратном порядке, затем по индексу 1. На каждом этапе сортировки я хотел бы поддерживать порядок, налагаемый другими столбцами. Например,
pork barn 4
pork barn2 4
pork nails 1
pig quartz 1
quinoa pail 1
quinoa quatern 1
quail quatern 1
radish barn 1
radish barn2 1
radish inbox 3
radish snow 1
станет:
pig quartz 1
pork barn 4
pork barn2 4
pork nails 1
quail quatern 1
quinoa pail 1
quinoa quatern 1
radish inbox 3 <-
radish barn 1
radish barn2 1
radish snow 1
то есть сортировка по первому столбцу, затем в каждой группе 1-го столбца (свинья, свинина, перепел, ...), сортировка по обратному третьему столбцу, затем в каждой группе 1-го столбца-3-го столбца ((свинья, 1), (свинина, 4), (свинина, 1), ...), сортировка по второму столбцу.
Как я могу сделать это красиво? Концептуально, если бы operator.itemgetter()
мог кодировать порядок сортировки вместе с индексом, я бы хотел что-то вроде m.sort(key=operator.itemgetter(0, -2, 1))
.