Список заказов нескольких элементов в Python по значению
Я создал список с несколькими элементами.
Например:
highScoreList = [["Dummy1",40,50],["Dummy2",100,80],["Dummy3",100,90]]
Я пытаюсь сортировать это на основе значений. Прежде всего, он должен сортироваться по самому большому 2-му значению (здесь: 100 больше 40).
Если есть некоторые элементы, которые имеют один и тот же 2-й элемент (здесь: 100 и 100), я по-прежнему хочу сортировать их с помощью 3-го элемента. Чем меньше 3-й элемент, тем выше он должен ранга (здесь: 80 меньше 90).
Результат должен быть:
Dummy2 100 Dummy3 100 Dummy1 40
В прошлом я написал какой-то аналогичный код для набора, используя только 1 балл.
def printHighScoreList(): descender = ((key,highScoreList[key]) for key in sorted(highScoreList,key=highScoreList.get, reverse=True)) for key, value in descender: print(key, value)
- вывод вложенного списка со списком
- Как проверить, содержит ли список1 некоторые элементы списка2?
- Учет списка для извлечения списка кортежей из словаря
- Преобразовать список в строки
- Преобразовать плоский список в список списка в python
Сделайте сортировку с помощью сложного ключа. Поскольку вы хотите, чтобы список списков сортировался в обратном порядке по первому индексу, инвертируйте ключ для первого индекса при использовании второго индекса как есть:
highScoreList.sort(key=lambda x: (-x[1], x[2]))
highScoreList
теперь отсортировано правильно:
[['Dummy2', 100, 80], ['Dummy3', 100, 90], ['Dummy1', 40, 50]]
В то время как метод двойной сортировки из ответа @ BHATIRSHAD принимает 3.39us (в вашем списке на моей машине для петель 10k), метод выше занимает всего 1,5us.
Сортируйте список в порядке возрастания по третьему элементу, а затем сортируйте результирующий список в порядке добавления на основе второго элемента списка. Демо-версия:
>>> highScoreList = [["Dummy1",40,50],["Dummy2",100,80],["Dummy3",100,90]] >>> sorted(sorted(highScoreList, key=lambda x:x[2]),key=lambda x:x[1],reverse=True) [['Dummy2', 100, 80], ['Dummy3', 100, 90], ['Dummy1', 40, 50]]
- Очистить элементы внутри свойств тегов – Scrapy
- Как конвертировать широкоформатный формат в формат с часовыми значениями и индексом datetime?
- Логическое индексирование со списками
- Преобразовать список с несколькими подсписками простым способом
- TypeError: объект 'list' не вызывается в python
- Создание дубликатов в списке
- Добавить в список, определенный в кортеже – это ошибка?
- Как применить функцию zip к n-list
- найти значения в перетасованном списке подписок одним из значений
- python – самая низкая стоимость проверки сразу нескольких равенств
- Больше «Pythonic» Способ чередования списка shuffle