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

파이썬 정렬의 핵심! key=lambda 쉽게 이해하고 활용하기

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

파이썬 정렬의 핵심! 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는 단순 정렬을 넘어서서 사용자 정의 기준으로 정렬할 수 있게 해주는 매우 강력한 도구입니다. 정렬할 데이터가 복잡할수록 이 기능은 훨씬 더 유용해져요. 처음에는 어렵게 느껴질 수 있지만, 예제를 몇 번 따라 해보면 금방 익숙해질 수 있습니다.

반응형