Как сортировать с лямбдой в Python

В Python я пытаюсь сортировать по дате с лямбдой. Я не могу понять свое сообщение об ошибке. Сообщение:

<lambda>() takes exactly 1 argument (2 given)

У меня есть строка

a = sorted(a, lambda x: x.modified, reverse=True)

Ответ 1

Использование

a = sorted(a, key=lambda x: x.modified, reverse=True)
#             ^^^^

В Python 2.x функция sorted принимает свои аргументы в следующем порядке:

sorted(iterable, cmp=None, key=None, reverse=False)

поэтому без key= функция, которую вы передаете, будет считаться функцией cmp, которая принимает 2 аргумента.

Ответ 2

lst = [('candy','30','100'), ('apple','10','200'), ('baby','20','300')]
lst.sort(key=lambda x:x[1])
print(lst)

Будет напечатано следующее:

[('apple', '10', '200'), ('baby', '20', '300'), ('candy', '30', '100')]

Ответ 3

В списках Python есть два встроенных способа сортировки данных:

sort() — A method that modifies the list in-place
sorted() — A built-in function that builds a new sorted list from an iterable

Исходя из ваших требований, вы можете выбрать один из этих двух:

если вы хотите сохранить оригинальный список, вы можете использовать отсортированную функцию или, если вам не нужен оригинальный список, вы можете использовать функцию сортировки.

Прежде чем приступить к сортировке или сортировке, нам нужно понять лямбду.

Лямбда - это анонимная функция, а анонимная функция - это функция, которая определена без имени, этот пост, кажется, объясняет это довольно хорошо.

https://www.programiz.com/python-programming/anonymous-function

Лямбда-функции удобны для вызова in-line, потому что они имеют только одно выражение, которое вычисляется и возвращается. У них синтаксис для лямбды такой:

лямбда аргументы: выражение

давайте посмотрим, как использовать отсортированную функцию:

student_tuples = [('john', 'A', 15),('jane', 'B', 12),('dave', 'B', 10),]
sorted(student_tuples, key=lambda student: student[2]) 

вывод: [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

Здесь мы видим, что список student_tuples с кортежами отсортирован на основе ключевого параметра при условии, что student [2].