답변:
사용하다
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 개의 인수를 취하는 함수 로 간주됩니다 .
lambda
때문에 파이썬이 다른 매개 변수를 제공 하는 것처럼 들립니다 cmp
.
cmp
비교기 함수는 두 개의 인수를 취합니다. 을 전달하도록 지정하지 않으면 key
함수 매개 변수 순서에서 비교자를 전달한다고 가정합니다. 람다는 하나의 매개 변수를 사용하므로 유효한 비교기가 아니며 오류가 말합니다.
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')]
파이썬리스트에는 데이터를 정렬하는 두 가지 기본 방법이 있습니다.
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
Lambda 함수는 평가 및 반환되는식이 하나뿐이므로 인라인 호출에 유용합니다. 람다 구문은 다음과 같습니다.
람다 인수 : 표현
정렬 된 함수를 사용하는 방법을 보자 :
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)]
여기 tuples가있는 student_tuples리스트가 student [2] 인 경우 주요 매개 변수를 기준으로 정렬 된 것을 볼 수 있습니다.