본문 바로가기

Algorithm/Python

[Python] 튜플 정렬

파이썬에서는 튜플을 원소로 하는 리스트가 있을 때, 그 리스트를 정렬하면 기본적으로 각 튜플을 구성하는 원소의 순서에 맞게 정렬된다는 특징이 있다. 

예를 들어 튜플이 3개의 원소로 구성된다면 모든 원소가 첫 번째 원소의 순서에 맞게 정렬되고, 첫번째 원소의 값이 같은 경우 두 번째 원소의 순서에 맞게 정렬되고, 거기에 두 번째 원소의 값까지 같은 경우 세 번째 원소의 순서에 맞게 정렬된다. 아래의 소스코드를 보자.

 

소스코드

a = [(5, 1, 5), (3, 5, 5), (3, 1, 9), (3, 1, 1)]
a.sort()

print(a)

결과

[(3, 1, 1), (3, 1, 9), (3, 5, 5), (5, 1, 5)]

 


또한 리스트의 원소를 정렬할 때는 sort() 함수의 key 속성에 값을 대입하여 내가 원하는 '조건'에 맞게 튜플을 정렬시킬 수 있다. 예를 들어 다음과 같은 코드가 있다고 하자.

 

A.sort(key = lambda x: (-int(x[1]), int(x[2]), -int(x[3]), x[0]))

 

위 코드의 의미는 다음과 같다.

  1. 두 번째 원소를 기준으로 내림차순 정렬
  2. 두 번째 원소가 같은 경우, 세 번째 원소를 기준으로 오름차순 정렬
  3. 세 번째 원소가 같은 경우, 네 번째 원소를 기준으로 내림차순 정렬
  4. 네 번째 원소가 같은 경우, 첫 번째 원소를 기준으로 오름차순 정렬

 

따라서 파이썬에서의 sort() 함수를 적절히 이용하면, 짧은 코드로 조건을 만족하는 방향으로 리스트 내 원소들을 정렬시킬 수 있다.