본문 바로가기
코딩취미/Python

파이썬 정렬 고급편: 여러 기준 정렬과 내림차순 정렬 쉽게 이해하기

by 브링블링 2025. 4. 26.
반응형

파이썬 정렬 고급편: 여러 기준 정렬과 내림차순 정렬 쉽게 이해하기

파이썬에서 리스트를 정렬할 때 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, ...) 형태로 다중 정렬을 해보세요!

반응형