у меня есть список, элементы которого являются словари со значением и поле типа, а именно:сортировать список питон на основе нескольких критериев
my_list = [{'val':5, 'type':0},{'val':6, 'type':2},{'val':2, 'type':1},{'val':9, 'type':0}]
Я хотел бы отсортировать этот список в порядке убывания, основанный на type
поле и внутри каждого типа на основе поля value
и получить вектор с соответствующими индексами сортировки вместе с отсортированным вектором.
Я знаю, как сделать это в течение отдельных критериев с использованием lambda
функции, т.е .:
sorted_list = sorted(my_list, key=lambda k: k['type'], reverse=True)
но как продлить ее на несколько критериев?
Желаемая выход:
sorted_list = [{'val':6, 'type':2},{'val':2, 'type':1},{'val':9, 'type':0},{'val':5, 'type':0}]
sorted_idxs = [1, 2, 3, 0]`, such that `[my_list[k] for k in sorted_idxs]==sorted_list
Когда у вас есть индексы, вы можете создать отсортированный список самостоятельно. Обратное неверно. –
И ответ, что дубликат не дает вам: http://stackoverflow.com/questions/6422700/how-to-get-indices-of-a-sorted-array-in-python –