728x90
[Python] Sorted 다중 조건 걸기
Sorted 함수
정렬을 할 때 사용하는 함수
lterable 자료형에 대해서 정렬이 가능하고, list 자료형으로 리턴한다.
sort 함수와 다르게 기존의 리스트는 건드리지 않고, 새로운 리스트를 변환한다.
Default가 오름차순이고 reverse=True 조건을 사용하면 내림차순으로정렬한다.
a = [5, 4, 3, 2, 1]
sorted(a)
[1,2,3,4,5]
다중 조건 걸기
(1) 조건 하나 걸기
sorted로 정렬을 할 때 key값을 통해서 조건을 걸 수 있다.
이때 조건은 lambda를 통해서 조건을 걸 수 있다.
lst = [['apple','red'],['banana','yellow'],['grape','purple']]
#색깔을 기준으로 정렬
sorted(lst, key=lambda x: x[1])
[['grape', 'purple'], ['apple', 'red'], ['banana', 'yellow']]
(2) 다중 조건 걸기
lambda에 튜플 형식으로 조건을 걸면 다중 조건을 걸 수 있다.
절대값 순으로 정렬을 해보자.
lst = [2, -1, 7, 6, -3, 5, 1, 3]
sorted(lst, key=abs)
[-1, 1, 2, -3, 3, 5, 6, 7]
이때, 음수가 먼저 오게되는데, 양수가 먼저 오게 정렬을 하고싶을 땐, 다음과 같이 조건을 준다.
sorted(lst, key=lambda x: (abs(x), -x))
[1, -1, 2, 3, -3, 5, 6, 7]
abs(x) 기준으로 정렬을 한뒤에, 동일한 값에 대해 뒤 조건으로 정렬을 한다.
-x 기준으로 오름차순 정렬을 하기 때문에 -(-1) > -(1) 이 되어 양수가 더 작은기준으로 정렬(오름차순)되어 앞에 오게된다.
참고
반응형
'👩💻 Develope > Python' 카테고리의 다른 글
[Python] 리스트끼리 빼기 (0) | 2023.09.22 |
---|---|
[Pandas] 특정 위치에 새로운 컬럼 삽입하기 (0) | 2023.09.21 |
[Python] Reduce (1) | 2023.09.06 |
[Python] isdigit, isalpha (0) | 2023.09.01 |
[Python] if문 한 줄로 구성하기 (0) | 2023.08.30 |