👩‍💻 Develope/Python

[Python] Sorted 다중 조건 걸기

heywantodo 2023. 9. 7. 18:59
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) 이 되어 양수가 더 작은기준으로 정렬(오름차순)되어 앞에 오게된다. 

 

참고

https://velog.io/@hyejin_nk/%ED%8C%8C%EC%9D%B4%EC%8D%AC-sorted-%EC%A0%95%EB%A0%AC-%EC%A1%B0%EA%B1%B4-%EB%8B%A4%EC%A4%91-%EC%A1%B0%EA%B1%B4

728x90
반응형