[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]