본문 바로가기

프로그래밍/[Python] 파이썬

[Python] sorted() 내장 함수

by GenieIT* 2024. 10. 22.

728x90
728x90

 

1. sorted() 함수란?

  • Python의 sorted() 함수반복 가능한(iterable) 객체를 정렬하여 새로운 리스트로 반환하는 내장 함수입니다.
  • 원본 데이터를 변경하지 않고, 정렬된 새로운 리스트를 반환하기 때문에 원본 데이터가 변하지 않는다는 특징을 가지고 있습니다.
  • sorted() 함수는 리스트, 튜플, 문자열, 딕셔너리, 집합 등의 반복 가능한 객체를 정렬할 때 사용할 수 있습니다.

 

2. 기본 문법

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

 

iterable (필수)

  • 정렬할 대상이 되는 반복 가능한 객체를 지정합니다. 여기에는 리스트, 튜플, 문자열, 딕셔너리, 집합 등이 포함될 수 있습니다.

key (선택, 기본값: None)

  • 정렬 기준을 정의하는 함수입니다. 각 요소에 대해 이 함수가 적용된 결과를 기준으로 정렬합니다.
  • lambda 함수기존 함수를 전달하여 정렬 기준을 지정할 수 있습니다.

reverse (선택, 기본값: False)

  • True로 설정하면 내림차순으로 정렬하고, 기본값인 False오름차순으로 정렬합니다.

 

3. 사용법 예시

3-1. 기본 사용

  • 정렬된 새로운 리스트를 반환합니다. 원래의 반복 가능한 객체는 변경되지 않습니다.
numbers = [3, 4, 1, 2, 5]
sorted_numbers = sorted(numbers)

print(numbers)
print(sorted_numbers)
 
'''
실행 결과
[3, 4, 1, 2, 5]
[1, 2, 3, 4, 5]
'''

 

 

3-2. reverse 매개변수

  • 내림차순으로 정렬하려면 reverse=True로 설정합니다.
numbers = [3, 4, 1, 2, 5]
sorted_numbers = sorted(numbers, reverse=True)

print(numbers)
print(sorted_numbers)
 
'''
실행 결과
[3, 4, 1, 2, 5]
[5, 4, 3, 2, 1]
'''

 

3-3. key 매개변수

  • key 매개변수는 정렬 기준을 정의하는 데 사용됩니다. key로 전달된 함수는 각 요소에 적용되어 그 결과를 기준으로 정렬됩니다.
# 리스트 내 문자열 길이에 따라 정렬
words = ["apple", "banana", "cherry", "date"]
sorted_words = sorted(words, key=len)

print(sorted_words)  

'''
실행 결과
['date', 'apple', 'banana', 'cherry']
'''

 

 

3-4. lambda를 사용한 key 매개변수

  • key에 lambda 함수를 전달하여 더 복잡한 기준으로 정렬할 수 있습니다.
# 튜플 두번째 값을 기준으로 정렬
pairs = [(1, 3), (4, 1), (2, 2), (5, 0)]
sorted_pairs = sorted(pairs, key=lambda pair: pair[1])
print(sorted_pairs)  

'''
실행 결과
[(5, 0), (4, 1), (2, 2), (1, 3)]
'''

 

3-5. 딕셔너리 key로 정렬

my_dict = {'apple': 2, 'banana': 1, 'cherry': 3}
sorted_keys = sorted(my_dict)
print(sorted_keys)

'''
실행 결과
['apple', 'banana', 'cherry']
'''

 

 

3-6. 딕셔너리 value로 정렬

my_dict = {'apple': 2, 'banana': 1, 'cherry': 3}
sorted_by_value = sorted(my_dict, key=lambda k: my_dict[k])
print(sorted_by_value) 

'''
실행 결과
['banana', 'apple', 'cherry']
'''

 

3-7. 문자열 정렬

word = "python"
sorted_chars = sorted(word)
print(sorted_chars)

'''
실행 결과
['h', 'n', 'o', 'p', 't', 'y']
'''

 

 

3-8. 리스트의 리스트 정렬

# 리스트 내 리스트의 두번째 요소를 기준으로 내림차순 정렬
students = [["Alice", 85], ["Bob", 75], ["Charlie", 95]]
sorted_students = sorted(students, key=lambda student: student[1], reverse=True)
print(sorted_students)

'''
실행 결과
[['Charlie', 95], ['Alice', 85], ['Bob', 75]]
'''

 

3-9. 튜플에서 두 개 이상의 요소를 기준으로 정렬

data = [(2, 3), (1, 2), (4, 1), (2, 2)]
# 첫 번째 값을 기준으로, 첫 번째 값이 같으면 두 번째 값으로 정렬
sorted_data = sorted(data, key=lambda x: (x[0], x[1]))
print(sorted_data)

'''
실행 결과
[(1, 2), (2, 2), (2, 3), (4, 1)]
'''

 

4. 마무리

  • sorted() 함수는 반복 가능한 객체를 정렬하여 새로운 리스트로 반환합니다.
  • 원본 데이터를 변경하지 않으며, 정렬된 리스트를 반환합니다.
  • 복잡한 데이터 구조도 key 매개변수를 사용하여 정렬할 수 있습니다.
  • sorted()는 리스트 외에도 다양한 반복 가능한 객체에서 사용할 수 있으며, key와 reverse 매개변수를 통해 유연하게 정렬할 수 있습니다.

 


 

관련글 목록

[Python] 파이썬 문자 개수 세기 - 문자열 count() 메서드

[Python] 파이썬 대문자 소문자 변경 (upper, lower, capitalize, title, swapcase, isupper, islower)

[Python] 파이썬 짝수 홀수 판별 예제

 

 

728x90