[Python] 리스트(List)에서 튜플(Tuple)이나 객체(Object) 정렬하기

업데이트(2021.04.18): 내용과 예시 추가

Python에서 리스트에 있는 튜플이나 클래스를 통해서 생성한 객체를 정렬하는 방법을 알아보자.


환경 및 선수조건

  • Python(3.X)


sort()함수와 sorted()함수

  • Python에서 제공하는 정렬함수는 기본적으로 stable을 보장한다. (관련문서)


sort()

  • sort(): 현재 리스트를 정렬
a = [3,5,7,8,2,6]
a.sort()

sorted()

  • sorted(): 함수의 인자로 들어온 리스트를 정렬해서 반환
a = [3,5,7,8,2,6]
b = sorted(a) # b에 정렬된 리스트가 새로 생성됨


key 매개변수 이용하기

  • key매개변수를 이용하여 비교하기전에 함수를 정의 할 수 있다.
  • key매개변수는 하나의 인자를 갖는 함수여야하며 정렬에 사용할 key를 반환해야한다.


튜플(tuple)을 사용하는 경우

  • 사용 예시
example_tuples = [ ('A', 3, 'a'), ('B', 1, 'b'), ('C', 2, 'c') ]

# 정렬
# 튜플의 2번째 원소 기준으로 정렬
example_tuples.sort(key = lambda element : element[1])

print(example_tuples)
  • 결과
[('B', 1, 'b'), ('C', 2, 'c'), ('A', 3, 'a')]


객체(Object)를 사용하는 경우

  • 사용 예시
class Example:
	def __init__(self, big, number, small):
		self.big = big
		self.number = number
		self.small = small

example_objects = [ Example('A', 3, 'a'), Example('B', 1, 'b'), Example('C', 2, 'c') ]

# 정렬
# 객체의 number 속성을 기준으로 정렬
example_objects.sort(key = lambda object : object.number)

for example_object in example_objects:
    print(example_object.big
          + " " + str(example_object.number)
          + " " + example_object.small)
  • 결과
B 1 b
C 2 c
A 3 a


정렬 관련 기타

내림차순 정렬

  • sort( reverse=True ): 현재 리스트를 내림차순으로 정렬
a = [3,5,7,8,2,6]
a.sort(reverse=True)

print(a)
[8, 7, 6, 5, 3, 2]


참고자료