반응형
파이썬 정렬 고급편: 여러 기준 정렬과 내림차순 정렬 쉽게 이해하기
파이썬에서 리스트를 정렬할 때 sorted() 함수 하나만 잘 써도 굉장히 유용합니다. 기본 정렬은 이제 익숙하다고 느껴진다면, 그다음 단계로 꼭 알아야 할 것이 있습니다.바로 여러 기준 정렬 (다중 정렬)과 내림차순 정렬입니다. 이 글에서는 초보자도 쉽게 이해할 수 있도록 단계별 예제와 함께 설명드립니다.
✅ 1. 내림차순 정렬 (reverse=True)
파이썬의 sorted() 함수나 list.sort() 메서드는 기본적으로 오름차순 정렬을 합니다.
내림차순(큰 값 → 작은 값) 으로 정렬하고 싶을 땐, reverse=True 옵션을 사용하면 됩니다.
📌 예제: 숫자 내림차순
numbers = [10, 5, 7, 2]
sorted_numbers = sorted(numbers, reverse=True)
print(sorted_numbers)
결과:
[10, 7, 5, 2]
✅ 2. 문자열 내림차순 정렬
words = ['banana', 'apple', 'cherry']
sorted_words = sorted(words, reverse=True)
print(sorted_words)
결과:
['cherry', 'banana', 'apple']
reverse=True는 정렬 기준이 적용된 후에 방향만 반대로 뒤집어줍니다.
✅ 3. key + reverse 함께 사용하기
정렬 기준(key)과 정렬 방향(reverse)은 함께 사용 가능합니다.
words = ['Apple', 'banana', 'cherry']
# 대소문자 구분 없이 정렬 + 내림차순
sorted_words = sorted(words, key=lambda x: x.lower(), reverse=True)
print(sorted_words)
결과:
['cherry', 'banana', 'Apple']
반응형
✅ 4. 여러 기준(다중 정렬) 적용하기
📌 예제: 이름, 나이로 구성된 튜플 정렬
먼저 이름으로 정렬, 그다음 나이 오름차순으로 정렬하고 싶다면?
people = [
('Alice', 30),
('Bob', 25),
('Alice', 25),
('Bob', 20)
]
# 이름 기준 → 나이 기준 (오름차순)
sorted_people = sorted(people, key=lambda x: (x[0], x[1]))
print(sorted_people)
결과:
[('Alice', 25), ('Alice', 30), ('Bob', 20), ('Bob', 25)]
🔄 나이 내림차순으로 바꾸고 싶다면?
# 이름 기준 → 나이 기준 (내림차순)
sorted_people = sorted(people, key=lambda x: (x[0], -x[1]))
파이썬은 튜플을 왼쪽부터 순차적으로 비교하며 정렬합니다.
-x[1]을 사용하면 숫자를 내림차순으로 정렬할 수 있어요.
✅ 5. 여러 기준 정렬 실전 예제
📌 상품 목록: (이름, 가격, 판매량)
products = [
('Keyboard', 30, 100),
('Mouse', 20, 200),
('Monitor', 200, 50),
('Keyboard', 30, 150)
]
# 제품 이름 → 가격 오름차순 → 판매량 내림차순
sorted_products = sorted(products, key=lambda x: (x[0], x[1], -x[2]))
for product in sorted_products:
print(product)
결과:
('Keyboard', 30, 150)
('Keyboard', 30, 100)
('Monitor', 200, 50)
('Mouse', 20, 200)
✅ 6. 정렬 함수 분리해서 사용하기 (가독성 향상)
복잡한 lambda 대신 함수로 정리해도 좋아요.
def sort_key(person):
return (person[0], -person[1])
sorted_people = sorted(people, key=sort_key)
가독성이 좋아지고, 조건이 길어질수록 유지보수가 쉬워집니다.
✅ 정리 요약
목적 | 방법 |
내림차순 정렬 | reverse=True |
문자열 기준 정렬 | key=lambda x: x.lower() |
다중 기준 정렬 | key=lambda x: (x[0], x[1]) |
특정 기준 내림차순 | key=lambda x: -x[n] |
lambda 대신 함수 | def key_func(x): ... |
🔖 마무리
정렬은 데이터를 보기 좋게 정리하거나, 필요한 순서로 처리할 때 매우 중요합니다. key와 reverse를 자유롭게 활용하면 훨씬 더 유연한 데이터 처리와 UI 정렬이 가능합니다. 정렬 기준이 2개 이상일 때는 lambda x: (기준1, 기준2, ...) 형태로 다중 정렬을 해보세요!
반응형
'코딩취미 > Python' 카테고리의 다른 글
파이썬 리스트 vs Pandas vs NumPy 정렬 성능 비교 (0) | 2025.04.26 |
---|---|
파이썬 정렬 성능 비교: sorted(), sort(), key=lambda 성능 차이는? (0) | 2025.04.26 |
파이썬 정렬의 핵심! key=lambda 쉽게 이해하고 활용하기 (0) | 2025.04.25 |
Python으로 프로세스 ID(PID) 관리 및 상태 확인하기 (0) | 2025.04.25 |
PySide6 프로그램 종료 시 반드시 호출되는 함수는 있을까? (0) | 2025.04.21 |