본문 바로가기

CS/알고리즘

알고리즘용 파이썬 sorted 함수로 정렬하는 여러 방법들

728x90

파이썬으로 알고리즘을 풀다보면 정렬을 사용해야 되는 경우를 자주 본다.

알고리즘에서 많이 쓰이는 파이썬 자료형은 리스트, 이차원리스트, 딕셔너리

 

여러 경우의 수에 어떻게 정렬을 하면 좋은지 정리해보았다.

앞으로 문제 풀며 다른 상황을 마주하게 된다면 추가하겠음

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
####################################################################
#리스트
str_li = ['AB''AA''AC''BA']
 
# 일반적인 정렬, 모든 인자를 앞에서부터 순서대로 비교하며 정렬해줌
print(sorted(str_li))
>> ['AA''AB''AC''BA']
 
# 길이순 정렬
print(sorted(str_li, key=len))
>> ['AB''AA''AC''BA']
 
# KEY값으로 람다식을 넣어서 각 요소 인덱스 1번을 기준으로 정렬
print(sorted(str_li, key=lambda x: x[1]))
>> ['AA''BA''AB''AC']
 
####################################################################
#이차원리스트
 
two_li = [[17], [03], [14], [15], [01], [25]]
 
# 각 리스트의 인덱스 1번 값을 기준으로 정렬
print(sorted(two_li, key=lambda x: x[1]))
>> [[01], [03], [14], [15], [25], [17]]
 
# key 값으로 람다식을 넣어서 0번 인덱스기준 오름차순, 1번 인덱스기준 내림차순 정렬 구현
# 0번 요소 우선 정렬
print(sorted(two_li, key=lambda x: (x[0], -x[1])))
>> [[03], [01], [17], [15], [14], [25]]
 
####################################################################
#딕셔너리#
 
dic = {"AB"5"AA"3"AC"2"BD"1"BA"0}
 
# 딕셔너리가 정렬된 후 튜플형태로 KEY,VALUE 값으로 정렬
print(sorted(dic.items()))
>> [('AA'3), ('AB'5), ('AC'2), ('BA'0), ('BD'1)]
 
# 벨류값으로만 정렬, 문제는 벨류값만 리턴됨
print(sorted(dic.values()))
>> [01235]
 
# 그냥 딕셔너리만 인자로 넣을시 key값만 반환됨
print(sorted(dic))
>> ['AA''AB''AC''BA''BD']
 
# 내림차순 정렬
print(sorted(dic, reverse=True))
>> ['BD''BA''AC''AB''AA']
 
# 람다식을 사용해서 벨류값 기준으로 정렬
# items() 함수로 튜플을 구성한 뒤 인덱스 번호로 val값에 접근
print(sorted(dic.items(), key=lambda item: item[1]))
>> [('BA'0), ('BD'1), ('AC'2), ('AA'3), ('AB'5)]
 
cs
728x90