Dev./Python.

[Python] 특정 기준으로 리스트 정렬하기 - lambda

devz0 2023. 4. 15. 00:00
728x90

 

Lambda

람다 함수는 파이썬에서 익명 함수(anonymous function)를 만들기 위해 사용되는 기능으로 함수의 이름 없이 매개변수와 반환값을 지정할 수 있다.  단일 표현식(expression)을 반환하므로, 복잡한 기능을 수행하기 위해서는 일반적인 함수를 사용해야 한다.

 

람다 함수는 주로 map, filter, reduce와 같은 함수와 함께 사용되어 리스트(list)나 튜플(tuple)과 같은 시퀀스 자료형의 원소를 처리하는데 사용된다.

 

특정 기준으로 리스트 정렬하기

 

파이썬에서 리스트를 정렬할 때 lambda식을 사용하여 정렬 기준을 지정할 수 있다. 정렬 함수의 인자로 key=lamdb식 형태로 넣어 사용이 가능하다.

my_list = [{name="z0", is_main=False}, {name="z01", is_main=True}, {name="z02", is_main=False}]

# 'name'요소를 기준으로 사전순 오름차순내림차순 정렬
my_list.sort(key=lambda x: x['name'])

# 'is_main'요소를 기준으로 내림차순 정렬 
my_list.sort(key=lambda x: x['is_main'], reverse=True)

나는 리스트 딕셔너리 형태의 데이터에서 is_main이 True인 값이 있는 데이터여부를 확인해야 했기 때문에 리스트 맨 처음 딕셔너리에 False인 값이 들어오면 오류를 반환하기 위해 is_main 키값을 기준으로 내림차순으로 정렬했다.  

 

파이썬에서 False는 0으로 취급되며, True는 1로 취급된다.

따라서 is_main 값이 True인 딕셔너리는 is_main 값이 False인 딕셔너리보다 큰 값을 가지므로, 정렬 시 가장 앞에 위치하게 된다. reverse 매개변수를 True로 설정하여 내림차순으로 정렬했기 때문에, is_main 값이 True인 딕셔너리가 리스트의 맨 앞에 위치하는 것이다.

 

728x90
반응형