BJ문제를 풀면서 사용자가 임의로 값을 정렬하고 싶을 때 어떻게 해야할지에 대한 고민을 했다.
python에서 lambda식으로 key값 기준으로 정렬할 수 있음을 알게 되었다.
lambda식은 lambda(param) : expression format이다.
정렬을 목적으로 하는 함수를 값으로 넣는다. lambda를 이용할 수 있다.
key 값을 기준으로 정렬되고 기본값은 오름차순이다.
ex) key = lambada x : x[1]
def labmda(x):
return x[1]
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
https://develop247.tistory.com/351
글 잘 읽었어요! 포스팅에 참고 했습니다 감사합니다!