У меня есть словарь, который нужно отсортировать. Я хочу сортировать dict на основе значений. И в качестве следующего шага, если два ключа имеют одинаковое значение, я хочу сортировать на основе лексикографических значений ключей.Сортировка на основе первого столбца, а затем следующего столбца
Я пробовал это.
>>> l
{'a': 5, 'aa': 5, 'c': 1, 'b': 7}
>>> sorted(l)
['a', 'aa', 'b', 'c']
>>> sorted(l.items())
[('a', 5), ('aa', 5), ('b', 7), ('c', 1)]
>>> sorted(l.items(), reverse=True)
[('c', 1), ('b', 7), ('aa', 5), ('a', 5)]
>>> sorted(l.items(), key=l.get, reverse=True)
[('a', 5), ('aa', 5), ('c', 1), ('b', 7)]
>>> l
{'a': 5, 'aa': 5, 'c': 1, 'b': 7}
>>> 5>7
False
>>> sorted(l.items(), key=l.get, reverse=True)
[('a', 5), ('aa', 5), ('c', 1), ('b', 7)]
>>> sorted(l, key=l.get, reverse=True)
['b', 'a', 'aa', 'c']
>>> s=sorted(l, key=l.get, reverse=True)
>>> s
['b', 'a', 'aa', 'c']
>>> s.sort()
>>> s
['a', 'aa', 'b', 'c']
Да, это то, что я ищу. Спасибо, я проверю ответ и приму его. –
Рад, что я мог помочь :) –
В качестве примечания стороны лямбда-функция может быть заменена эквивалентной, более эффективной, немного менее очевидной функцией 'operator.itemgetter (1, 0)'. –