관리 메뉴

이모저모

[PCCE 기출문제] 10번 / 데이터 분석(sort) 본문

코딩공부/프로그래머스(파이썬)

[PCCE 기출문제] 10번 / 데이터 분석(sort)

bhoon 2024. 3. 11. 20:36

1. 나의 풀이

def solution(data, ext, val_ext, sort_by):
    answer = []
    col_dic = {"code": 0,"date":1,"maximum":2,"remain":3}

    for dt in data:
        if dt[col_dic[ext]] < val_ext:
            answer.append(dt)

    answer.sort(key = lambda x: x[col_dic[sort_by]])    
    return answer

 

2. sort(key = )

2.1. 기본정렬

sort에 key라는 파라미터를 설정할 수 있다는 것을 처음 알았다.

key를 이용하면 key에서 사용한 함수의 결과에 따라 정렬을 한다. 기본은 오름차순이고 내립차순으로 정렬하고 싶으면 reverse = True를 설정하면 된다.

list_ = ["hi","hello","bonjour","hola","nihao"]
list_.sort(key=len)
print(list_)
# 결과
# ['hi', 'hola', 'hello', 'nihao', 'bonjour']

list_.sort(key=len,reverse = True)
print(list_)
# 결과
# ['bonjour', 'hello', 'nihao', 'hola', 'hi']

 

2.2. 이차원 배열 정렬

순서대로 0번 인덱스 기준으로 오름차순, 0번째 인덱스 기준으로 오름차순 후 1번째 인덱스 기준으로 오름차순, 0번째 인덱스 기준으로 내림차순 후 1번째 인덱스 기준으로 오름차순이다. 인덱스를 사용하는 경우 reverse를 하려면 '-'를 붙이면 되고 여러 인덱스를 기준으로 삼고 싶으면 튜플로 묶으면 된다.

list_ = [[1,2],[2,4],[5,6],[7,2],[1,5]]
list_.sort(key = lambda x: x[0])
list_
# 결과값: [[1, 2], [1, 5], [2, 4], [5, 6], [7, 2]]

list_.sort(key = lambda x: (x[0], x[1]))
list_
# 결과값: [[1, 2], [1, 5], [2, 4], [5, 6], [7, 2]]

list_.sort(key = lambda x: (-x[0], x[1]))
list_
# 결과값: [[7, 2], [5, 6], [2, 4], [1, 2], [1, 5]]

 

 

2.3. 딕셔너리 정렬

딕셔너리의 경우 sorted()함수를 사용해야 한다. sorted(이터러블, key, reverse) 형태로 사용하면 된다.

dic = { 1:5, 2:4, 4:5, 3:7, 5:6}
dic.items()
# 결과값: dict_items([(1, 5), (2, 4), (4, 5), (3, 7), (5, 6)])

x = sorted(dic.items(), key = lambda x: x[0])
print(x)
# 결과값: [(1, 5), (2, 4), (3, 7), (4, 5), (5, 6)]

list(dic)
# 결과값: [1, 2, 4, 3, 5]
# key값만 저장된다.

dic.items()를 이용해 이터러블형으로 바꾸어 준다. iterable의 대표적인 예는 sequence type인 list, str, tuple이 있다. 여기서 dict에 list를 사용시 key값만 저장되므로 key와 value 쌍을 얻고 싶다면 items()를 사용해야 한다.

 

3. 참고 사이트

https://haesoo9410.tistory.com/193

 

<파이썬> 2차원 배열 정렬

1. 기본적인 리스트 정렬 * sort 정렬 - sort는 리스트에서 제공되는 기본적인 메서드이다. 주로 아래와 같이 사용한다. lst = [2, 3, 5, 6, 1, 4] lst.sort() print(lst) # [1, 2, 3, 4, 5, 6] - sort 는 기본적으로 오름

haesoo9410.tistory.com

https://m.blog.naver.com/youndok/222200162081

 

파이썬 iterable(이터러블) 데이터 타입(자료형) 및 iterable 뜻(의미)

본 포스팅에서는 Python의 큰 장점인 "iterable"의 의미와 "iterable" 데이터 타입의...

blog.naver.com

 

'코딩공부 > 프로그래머스(파이썬)' 카테고리의 다른 글

배열 회전시키기(insert, pop, del)  (0) 2024.03.13
소수찾기(에라토스테네스의 체)  (0) 2024.03.12
순서쌍의 개수  (0) 2024.03.11
소수 만들기  (0) 2024.03.10
과일장수 문제  (0) 2024.03.09