파이썬 sort와 sorted

GOTAEUK·2022년 2월 12일
0
post-thumbnail

파이썬에서는 정렬을 해주는 내장함수가 존재한다. 내장함수 sort와 메소드 sorted는 어떤 차이가 있고 어떻게 활용이 가능한 지 알아보자


1. sort

sort는 리스트 정렬 메소드로 기존의 리스트를 정렬하고 None을 반환한다.
리스트만 정렬가능하며 딕셔너리, 튜플 등은 sort를 사용할 수 없다.

list_a=[3,2,1,4,5]
list_a.sort()
print(list_a)

# 결과: [1, 2, 3, 4, 5]

2. sorted

sortedsort와 달리 iterable 객체에서 모두 사용 가능하다. 새로운 객체를 반환하기 때문에 sort보다는 속도가 느리다.

list_a = [3, 2, 1, 4, 5]
list_b=sorted(list_a)
print(list_b)

# 결과: [1, 2, 3, 4, 5]

딕셔너리 자료형에서 키를 기준으로 정렬하는 방법 중 하나는 items메소드와 sorted 함수, dict 함수를 사용하면 된다.

from collections import defaultdict

dict_a = defaultdict(str)
dict_a[3]
dict_a[2]
dict_a[1]

print(dict(sorted(dict_a.items())))

# 결과: {1: '', 2: '', 3: ''}

만약 딕셔너리에서 값을 기준으로 정렬을 하고 싶다면 어떻게 해야할까? sorted 함수의 key를 이용하는 방법이 있다!


key
sortsorted에는 key매개변수가 존재하는데 keylambda함수를 활용하여 원하는 기준으로 정렬할 수 있다.

dict_a = {
    "라면": 1000,
    "과자": 1200,
    "커피": 3800,
    "사탕": 500
}
dict_b = dict(sorted(dict_a.items(), key=lambda x: x[1]))
print(dict_b)

# 결과: {'사탕': 500, '라면': 1000, '과자': 1200, '커피': 3800}

튜플을 정렬하는데 튜플의 첫번째 값을 기준으로 오름차순 정렬하고 첫번째 값이 같다면 튜플의 두번째 값을 기준으로 내림차순 정렬하는 예시이다.

dict_a = [(1, 100), (3, 300), (2, 100), (4, 700), (3, 900)]
dict_b = sorted(dict_a, key=lambda x: (x[0], -x[1]))
print(dict_b)

# 결과: [(1, 100), (2, 100), (3, 900), (3, 300), (4, 700)]

이처럼 key에서 -부호를 붙여서 내림차순 정렬을 할 수 있지만 sortsorted 함수에는 reverse 파라미터가 존재한다.

reverse
내림차순으로 정렬하고자 한다면 reverseTrue로 설정하면 된다.

list_a = [5, 4, 2, 1, 3, 8, 7, 6, 9, 10]
print(sorted(list_a, reverse=True))

# 결과: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

출처 및 참고

profile
한걸음씩

0개의 댓글