[코딩 스터디] 파이썬 정렬 함수 sorted _ key = lambda

Hayoon·2022년 9월 10일
0

BJ문제를 풀면서 사용자가 임의로 값을 정렬하고 싶을 때 어떻게 해야할지에 대한 고민을 했다.
python에서 lambda식으로 key값 기준으로 정렬할 수 있음을 알게 되었다.
lambda식은 lambda(param) : expression format이다.

key

정렬을 목적으로 하는 함수를 값으로 넣는다. lambda를 이용할 수 있다.
key 값을 기준으로 정렬되고 기본값은 오름차순이다.
ex) key = lambada x : x[1]

def labmda(x):
	return x[1]

list[0]을 기준으로 정렬

list_num = [[4, 'four'], [3, 'three'], [0, 'zero'], [2, 'two'], [1, 'one']]
print(sorted(list_num, key=lambda x: x[0]

출력 시 -> [[0, 'zero'], [1, 'one']], [2, 'two'], [3, 'three'], [4, 'four']]

문자열의 길이를 기준으로 정렬

list_str = ['hi', 'this', 'is', 'python']
print(sorted(list_str, key=lambda x: len(x)))

출력 시 -> ['hi', 'is', 'this', 'python']

여러 개의 요소를 가진 경우, 튜플로 정렬

tuple_list = [('안녕', 0),
                   ('hi', 1),
                   ('hello', 3),
                   ('good_bye', 2),
                   ('good_morning', 5)]

tuple_list.sort(key=lambda x: (x[1], x[0]))  # '-'부호를 이용해서 역순으로 가능
print(tuple_list)
#[('안녕', 0), ('hi', 1), ('good_bye', 2), ('hello', 3), ('good_morning', 5)]

tuple_list.sort(key=lambda x: (-x[1], x[0]))  # '-'부호를 이용해서 역순으로 가능
print(tuple_list)
#[('good_morning', 5), ('hello', 3), ('good_bye', 2), ('hi', 1), ('안녕', 0)]

lambda key관련 BOJ문제: https://www.acmicpc.net/problem/11651

profile
Junior Developer

1개의 댓글

comment-user-thumbnail
2023년 5월 9일

https://develop247.tistory.com/351
글 잘 읽었어요! 포스팅에 참고 했습니다 감사합니다!

답글 달기