문제

이차원 배열 data에 [code,data,maximun,remain] 으로 구성되어 있는 데이터가 들어가 있습니다.
어떤 정보를 기준으로 데이터를 뽑아낼지를 의미하는 문자열 ext,
뽑아낼 정보의 기준값을 나타내는 정수 val_ext,
정보를 정렬할 기준이 되는 문자열 sort_by가 주어집니다.
data에서 ext 값이 val_ext보다 작은 데이터만 뽑은 후, sort_by에 해당하는 값을 기준으로 오름차순으로 정렬하여 return 하세요

문제 풀러 가기


풀이


  1. data의 컬럼 명에 따라 index를 반환할 수 있는 column_dict을 생성
  2. ext과 column_dict을 활용하여 val_ext와 비교할 데이터의 인덱스를 알아내고 비교
  3. sort_by와 column_dict을 활용 오름차순할 데이터의 인덱스를 알아내고 오름차순 진행



코드

def solution(data, ext, val_ext, sort_by):
    column_dict = {'code' : 0, 'date' : 1, 'maximum' : 2, 'remain' : 3}
    
    
    con_data = []
    for row in data:
        con_index =  column_dict[ext]
        if row[con_index] < val_ext:
            con_data.append(row)
        
    sorted_data = sorted(con_data, key = lambda x : x[column_dict[sort_by]])
    
    return sorted_data