파이썬/문법

파이썬 튜플 리스트 정렬 (python tuple sort)

hanshow113 2021. 4. 12. 23:43

파이썬에서 튜플을 사용해서 정렬해야 할 때가 있다. 

백준 단어정렬 문제를 딕셔너리로 풀어보려다가 너무 복잡해져서 힌트를 좀 찾아보니 다들 튜플로 풀었길래 튜플 정렬에 관한 내용을 정리해보려고 한다.

hansuho113.tistory.com/27

 

백준(BAEKJOON) 1181 단어정렬 - 파이썬(python)

처음에는 딕셔너리를 사용해서 {"단어":단어길이} 식으로 key, value 로 접근해서 풀려고 했는데 한 조건이 같을 때 다음 조건으로 정렬하는 부분을 구현하는 데 어려움이 있어서 튜플을 이용해서

hansuho113.tistory.com

 

 

tuple_list = [ (3, 4), (1, 2), (2, 5) ]

위처럼 리스트의 원소가 튜플로 이루어져 있는 경우 정렬을 하기 위해서는 리스트의 sort()를 사용하면 된다.
튜플을 감싸고 있는 것이 리스트이기 때문인데 sort()의 사용법은 간단하다.

sort()의 경우 결과값을 반환해서 보여주지 않으므로 결과를 확인하기 위해서는 출력을 해주어야 한다.

tuple_list.sort()
tuple_list
>>> [(1, 2), (2, 5), (3, 4)]

튜플의 첫 번째 원소인 1,2,3 순서로 오름차순 정렬된 것을 볼 수 있다.


그 중 튜플의 첫 번째 원소를 특정해서 정렬하고 싶다면 아래와 같이 작성하며 된다

# 오름차순
tuple_list.sort(key=lambda x: x[0])

#내림차순
tuple_list.sort(key=lambda x: x[0], reverse=True)
or
tuple_list.sort(key=lambda x: -x[0])


튜플의 첫 번째 원소로 정렬, 이후 같은 값이 나오면 두 번째 원소 정렬하는 방식
tuple_list.sort(key=lambda x: (x[0], x[1]))

튜플의 두 번째 원소로 정렬, 이후 같은 값이 나오면 첫 번째 원소 정렬하는 방식
tuple_list.sort(key=lambda x: (x[1], x[0]))


오름차순, 내림차순은 reverse 혹은 - 부호를 사용하여 적절히 사용하면 된다.