프로그래밍 언어/Python

[Python] sorted() 다중조건으로 정렬하는 방법

benjykim 2021. 1. 13. 17:03
반응형

[Python] sorted() 다중조건으로 정렬하는 방법

2018 KAKAO BLIND RECRUITMENT - [3차] 방금그곡 문제에 정렬을 해야 하는 부분이 있는데, sorted함수 안에서 itemgetter를 사용하여 해결하려했습니다. 그러나 원하는대로 작동하지 않아, 결국 itemgetter를 쓰지 않고 다른 방법으로 해당 코드를 변경하여 풀었습니다. 이 기회에 sorted() 함수를 간략하게 정리하려 합니다.

 

  • 예제

    >>> a = [(1,3), (0,3), (1,4), (1,5), (0,1), (2,4)]
    >>> b = sorted(e, key=lambda x: x[0])
    >>> b
    [(0, 3), (0, 1), (1, 3), (1, 4), (1, 5), (2, 4)] 
    
    # 기본 동작은 오름차순
    >>> c = sorted(e, key=lambda x: x[1])
    >>> c
    [(0, 1), (1, 3), (0, 3), (1, 4), (2, 4), (1, 5)] 
    # - 붙일 경우 내림차순
    >>> c = sorted(e, key=lambda x: -x[1])
    >>> c
    [(1, 5), (1, 4), (2, 4), (1, 3), (0, 3), (0, 1)] 
    
    # 다중 조건 예제
    # 첫번째 요소로 오름차순을 진행한 다음, 그 결과를 가지고 내림차순을 진행한다. 다시 말해, 첫번째 요소가 먼저 정렬이 되어 고정되고, 그 뒤에 (1, 3), (1, 4), (1, 5) 등의 요소들이 두 번째 요소를 기준으로 정렬된다.
    >>> d = sorted(e, key=lambda x: (x[0], -x[1]))
    >>> d
    [(0, 3), (0, 1), (1, 5), (1, 4), (1, 3), (2, 4)] 
반응형