본문 바로가기
방구석코딩/파이썬 기초문법

[파이썬] sorted() 함수 이해 및 활용법 (key 매개변수 활용법)

by 석세상 2023. 9. 11.
반응형

파이썬 프로그램 sorted() 함수 이해 및 활용법에 대해 알아보도록 하겠습니다.

파이썬 sort 함수, 2개이상 key로 정렬하는 법

 


sorted 함수 개요

sorted 함수는 데이터 구조의 요소를 쉽게 정렬할 수 있는 sorted() 함수입니다. 리스트(list), 튜플(tuple), 사전(dict), 사용자 지정 개체와 관계없이 sorted() 함수를 이용하여 데이터를 정렬할 수 있습니다.

 

 

sorted() 함수의 이해

파이썬의 sorted() 함수는 특정 기준에 따라 리스트, 튜플, 사전과 같은 데이터 구조의 요소를 정렬하는 데 사용되며, 원래 데이터의 정렬은 변경되지 않고 그대로 두고 새로 정렬된 목록을 반환합니다.

 

 

 

sorted() 함수 구문

sorted() 함수의 구문은 다음과 같습니다.

sorted(iterable, key=None, reverse=False)

여기서 "iterable"은 정렬할 데이터 구조를 나타내고, "key"는 사용자 정의 정렬을 위한 선택적 매개변수이며, "reverse"는 정렬 순서를 제어하기 위한 선택적 매개변수입니다.

 

하나씩 풀어보자면 iterable 매개변수는 정렬하려는 입력 순서입니다. 정렬기준에 따라 이 요소를 정렬합니다. 

 

key 매개변수는 정렬 순서를 결정하기 위한 값을 생성하는 함수를 지정할 수 있습니다. 사용자 정의 기능으로 복잡한 정렬에도 사용하능합니다.

 

마지막으로 reversed 매개변수는 True인 경우 역순(내림차순)으로 정렬하며, 기본값은 False로 오름차순으로 정렬됩니다. 따라서 reversed 매개변수를 생략하는 경우 오름차순으로 정렬됩니다.

 

 

코드 예시 및 설명

sorted() 함수의 사용법을 위해 몇 가지 예제를 살펴보겠습니다.

 

예시 1: 숫자 정렬

numbers = [5, 2, 8, 1, 9, 3]
sorted_numbers = sorted(numbers)
print("Sorted Numbers:", sorted_numbers)

# 결과
Sorted Numbers: [1, 2, 3, 5, 8, 9]

이 예제에서는 sorted() 함수를 사용하여 숫자 목록을 오름차순으로 정렬합니다.

 

 

예제 2: 문자열 정렬

fruits = ["apple", "banana", "cherry", "orange", "kiwi"]
sorted_fruits = sorted(fruits)
print("Sorted Fruits:", sorted_fruits)

# 결과
Sorted Fruits: ['apple', 'banana', 'cherry', 'kiwi', 'orange']

여기서는 sorted() 함수를 사용하여 문자열 목록을 알파벳순으로 정렬합니다.

 

 

예시 3: 특정 키로 튜플 정렬 소제목

다음은 2개 이상의 요소가 있는 튜플에 대한 정렬에 대한 예시입니다. 이때 첫번째 요소를 앨리스, 두번째 요소를 나이라고 칭하겠습니다. 그럼 student에는 이름과 연령이 있는 4개의 튜플이 들어있는 리스트 형태입니다.

students = [("Alice", 25), ("Bob", 20), ("Charlie", 18), ("David", 22)]
sorted_students = sorted(students, key=lambda x: x[1])
print("Sorted Students:", sorted_students)

# 결과
Sorted Students: [('Charlie', 18), ('Bob', 20), ('David', 22), ('Alice', 25)]

iterable에는 객체명을, key에는 정렬하고자 하는 값을 넣어주는데 한 튜플에 2개의 값이 들어있으니 어떤 값으로 정렬해줄 지 지정해야 합니다.

 

lambda라는 함수를 이용하여 x에 어떤값을 넣고자 하는 것을 결정해야 합니다. 여기서는 x[1]로 튜플에서 2번째 있는 나이로 정렬한다고 하였습니다. 

 

참고로 파이썬의 index는 0부터 시작하니 [1]을 넣어주면 2번째 요소인 나이를 기준으로 튜플이 정렬됩니다.

 

index에 대해 궁금하시다면 아래 링크를 참조해주세요

 

[파이썬 기초] 리스트 자료형③ - 함수(append, sort, index, insert, pop 등)

지난번 리스트에 사용하는 연산자, 수정, 삭제 등에 대해서 알아봤다면, 오늘은 리스트에서 사용되는 함수에 대해서 알아보자. 함수들은 리스트 자료형 외에도 자주 쓰이니 기본적인 사용법과

gusugi.tistory.com

 

예시 4: 2개 이상의 특정 키

앞의 예시3과 유사하지만 만약 정렬해야 하는 key가 2개 이상이라면 어떻게 해야 할까요? 세번째 값을 신장이라고 생각하고 나이가 같다면 신장순으로 정렬하도록 하겠습니다.

 

예시를 보면 "Charlie와 "Tom"은 18세로 나이가 같습니다. 이렇게 나이가 같은 경우 신장순으로 정렬하기 위해서는 다음과 같이 적용해야 합니다.

students = [("Alice", 25, 170), ("Bob", 20, 183), ("Charlie", 18, 178), ("David", 22, 170), ("Tom", 18, 174)]
sorted_students = sorted(students, key=lambda x: (x[1], x[2]))
print("Sorted Students:", sorted_students)

# 결과
Sorted Students: [('Tom', 18, 174), ('Charlie', 18, 178), ('Bob', 20, 183), ('David', 22, 170), ('Alice', 25, 170)]

 

예시 3에서는 하나의 정렬하는 키가 필요했기 때문에 lambda x: 뒤에 x[1]로 하나의 키만 지정해주었지만 2개 이상인 경우는 튜플을 이용해 (x[1], x[2])로 입력합니다. x[1]은 나이, x[2]는 신장입니다.

 

 반대로 신장순으로 정렬하는데 동일한 신장이 있는 경우 나이순으로 정렬하려면 (x[2], x[1])로 입력합니다. 결과는 앞의 결과와 다르게 신장순, 연령 순으로 나타나는걸 볼 수 있습니다.

Sorted Students: [('David', 22, 170), ('Alice', 25, 170), ('Tom', 18, 174), ('Charlie', 18, 178), ('Bob', 20, 183)]
728x90
반응형

댓글