def solution(data, ext, val_ext, sort_by):
answer = []
map_idx = {'code':0, 'date':1, 'maximum':2, 'remain':3}
for d in range(len(data)):
if data[d][map_idx[ext]] < val_ext:
answer.append(data[d])
answer.sort(key=lambda x:x[map_idx[sort_by]])
return answer
이 문제는 리스트를 정렬하는 함수를 알고 있어야 풀 수 있는 문제였다. 문제를 풀 때 List.sort() 함수를 사용했다. 아래는 함수의 사용법이다.
리스트.sort(key=함수, reverse=불리언)
arr = [3, 5, 1, 2]
arr.sort(reverse=True)
# arr1: [5, 3, 2, 1]
리스트에서만 사용 가능
원본 변경
reverse=True 시 내림차순
문제의 data 리스트 같은 경우 key 인자를 통해 정렬 기준을 줄 수 있다.
# data: [[1, 20300104, 100, 80], [2, 20300804, 847, 37], [3, 20300401, 10, 8]]
data.sort(key=lambda x:x[1], reverse=False)
# data: [[1, 20300104, 100, 80], [3, 20300401, 10, 8]], [2, 20300804, 847, 37]
# 기준이 두 개 (x[1] 기준 오름차순, x[2] 기준 내림차순)
data.sort(key=lambda (x: x[1], -x[2]))
리스트를 정렬하기 위한 비슷한 함수로는 List = sorted() 함수가 있다. 아래는 해당 함수의 사용법이다.
sorted(리스트, key=함수, reverse=불리언)
arr = [3, 5, 1, 2]
arr1 = sorted(arr, reverse=True)
# arr1: [5, 3, 2, 1]