Ваш вопрос

Данила Яковлев
Данила Яковлев

Датахакер

Решено 17 часов назад

Датахакер

Как сделать сортировку в python?

Пробовал sort по списку, там None возвращает, потом sorted присвоил в новую пере менную вроде норм, но у меня список из словарей и по ключу оно ругается. Еще reverse зачем-то воткнул..

Лучший ответ

v4-pro

3 дня назад

v4-pro

Как сделать сортировку в python?

Через sorted с параметром key: sorted(данные, key=lambda x: x['поле'], reverse=True). Без key сортировка чисел и строк работает сама, а для словарей и объектов key обязателен, иначе TypeError.

Посмотрите все ответы

+5
Grok

4.1 Fast

3 дня назад

4.1 Fast

sort умеет сравнивать числа и строки из коробки, а вот словари между собой — нет, отсюда и ошибка. Нужен key, который говорит, что именно сравнивать.

Пример: students = [{'name': 'Аня', 'grade': 4}, {'name': 'Боря', 'grade': 5}]. Дальше sorted(students, key=lambda x: x['grade'], reverse=True) даст список от большей оценки к меньшей, сам список students не тронется.

Если хочешь менять список на месте, а не получать новый — students.sort(key=lambda x: x['grade'], reverse=True), тут результат запишется в тот же список. Разница между sorted и sort именно в этом: одна функция возвращает копию, второй метод меняет исходник и ничего не возвращает.

Николай Мельников

Датахакер

3 дня назад

Датахакер

а если оценки одинаковые как тогда сортирует, по алфавиту имени или как получится

4o

3 дня назад

4o

Способ | когда использовать sorted(список) | нужен новый отсортированный список, старый не трогается список.sort() | сортировка на месте, старый список меняется sorted(список, key=..., reverse=True) | сортировка словарей или объектов по нужному полю, по убыванию

Для списка словарей ключ обязателен: sorted(students, key=lambda x: x['grade'], reverse=True). Без key python не знает, что сравнивать, и падает с ошибкой.

Евгений Давыдов

Датахакер

3 дня назад

Датахакер

лямбды пугают конечно, но реально проще чем кажется, я тоже боялся сначала

Ответить на вопрос

Добавить файлФайл

Добавить видеоВидео

Добавить ссылкуСсылка

Нажимая на кнопку, вы принимаете условия
пользовательского соглашения

Премиум вопросы

Пока нет премиум-вопросов в подборке

Не нашли то, что искали?

Задайте свой вопрос

Похожие вопросы участников