반응형
파이썬 정렬의 핵심! key=lambda 쉽게 이해하고 활용하기
파이썬에서 정렬을 자주 사용하는 분이라면 key=lambda 라는 문법을 자주 보셨을 거예요.
하지만 이게 정확히 무엇을 하는 건지, 왜 쓰는 건지, 어떻게 써야 하는지 처음엔 헷갈릴 수 있습니다.
이 글에서는 초보자도 쉽게 이해할 수 있도록 key=lambda 사용법을 예제와 함께 단계별로 설명드릴게요.
1단계. 기본 정렬부터 시작하기
fruits = ['banana', 'apple', 'cherry']
print(sorted(fruits))
결과:
['apple', 'banana', 'cherry']
sorted()는 기본적으로 문자열을 알파벳 순서로 정렬합니다.
2단계. 숫자 정렬은 그냥 쓰면 된다
numbers = [10, 2, 33, 1]
print(sorted(numbers))
결과:
[1, 2, 10, 33]
숫자 정렬은 sorted()만 써도 잘 정렬됩니다.
3단계. key=lambda가 필요한 이유
예를 들어, 단어의 길이를 기준으로 정렬하고 싶을 땐?
words = ['apple', 'banana', 'kiwi', 'grape']
print(sorted(words, key=lambda word: len(word)))
결과:
['kiwi', 'apple', 'grape', 'banana']
🔹 여기서 lambda word: len(word)는
"단어를 받아서 그 길이를 기준으로 정렬해줘" 라는 뜻이에요.
반응형
4단계. 튜플의 특정 값을 기준으로 정렬하기
people = [
('Alice', 25),
('Bob', 30),
('Charlie', 20)
]
print(sorted(people, key=lambda person: person[1]))
결과:
[('Charlie', 20), ('Alice', 25), ('Bob', 30)]
🔹 이 경우 person[1]은 나이이며, 나이를 기준으로 정렬된 겁니다.
5단계. 문자열의 특정 부분만 추출해서 정렬하기
codes = ['Item-10', 'Item-2', 'Item-1']
print(sorted(codes, key=lambda code: int(code.split('-')[1])))
결과:
['Item-1', 'Item-2', 'Item-10']
🔹 'Item-10'처럼 숫자가 뒤에 있는 문자열도 split('-')[1]로 숫자 부분만 꺼내 정렬합니다.
**숫자형으로 변환(int)**해야 "10"이 "2"보다 앞에 오는 문제를 해결할 수 있어요.
6단계. lambda 없이 함수로도 가능하다
def get_length(x):
return len(x)
words = ['apple', 'kiwi', 'banana']
print(sorted(words, key=get_length))
lambda는 짧은 함수를 바로 쓸 수 있어서 편리하지만,
복잡하거나 재사용할 땐 def로 함수로 만들어도 괜찮습니다.
정리: 자주 쓰는 key=lambda 패턴 모음
정렬 기준 | 예시 | key 함수 |
문자열 길이 | ['kiwi', 'banana'] | key=lambda x: len(x) |
튜플 값 | [('A', 3)] | key=lambda x: x[1] |
문자열 일부 | 'Item-10' | key=lambda x: int(x.split('-')[1]) |
대소문자 무시 | 'Apple', 'banana' | key=lambda x: x.lower() |
숫자 역순 | [1, 3, 2] | key=lambda x: x, reverse=True |
마무리
key=lambda는 단순 정렬을 넘어서서 사용자 정의 기준으로 정렬할 수 있게 해주는 매우 강력한 도구입니다. 정렬할 데이터가 복잡할수록 이 기능은 훨씬 더 유용해져요. 처음에는 어렵게 느껴질 수 있지만, 예제를 몇 번 따라 해보면 금방 익숙해질 수 있습니다.
반응형
'코딩취미 > Python' 카테고리의 다른 글
파이썬 정렬 성능 비교: sorted(), sort(), key=lambda 성능 차이는? (0) | 2025.04.26 |
---|---|
파이썬 정렬 고급편: 여러 기준 정렬과 내림차순 정렬 쉽게 이해하기 (0) | 2025.04.26 |
Python으로 프로세스 ID(PID) 관리 및 상태 확인하기 (0) | 2025.04.25 |
PySide6 프로그램 종료 시 반드시 호출되는 함수는 있을까? (0) | 2025.04.21 |
파이썬 Enum 클래스 완벽 정리 – 왜, 어떻게 써야 할까? (0) | 2025.04.10 |