[python] 파이썬에서 람다로 정렬하는 방법

파이썬에서 람다로 날짜별로 정렬하려고합니다. 내 오류 메시지를 이해할 수 없습니다. 메시지는 다음과 같습니다

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

내가 가진 줄은

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



답변

사용하다

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 개의 인수를 취하는 함수 로 간주됩니다 .


답변

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] 인 경우 주요 매개 변수를 기준으로 정렬 된 것을 볼 수 있습니다.


답변