Programming Language/Python

[Python] 사전(dict)형 정렬하기

깜태 2021. 3. 21. 18:37
728x90
dict_info = {
	'A' : 65, 
    'B' :176,
    'C' : 30, 
    'D' :135,
    'E' : 50,
    'F' :153,
    'G' : 90, 
    'H' :171
    }

1. Key 값만 정렬해서 출력

#1. key값만 알파벳 순서대로 정렬
sorted(dict_info)
#1-1 역순일 경우,
dict_info = sorted(dict_info, reverse=True)

 

2.Value 값만 정렬해서 출력

# Value의 값을 정렬해서 출력
dict_info = sorted(dict_info.values())

# 역순일 경우
dict_info = sorted(dict_info.values(), reverse=True)

3. Key값을 기준으로 사전형 전체를 출력

#3. Key값을 기준으로 dict를 정렬해서 출력
sorted(dict_info.items(), key=lambda x: x[0])

# 역순으로 출력(큰 순서대로)
sorted(dict_info.items(), key=lambda x: x[0], reverse=True)

4.Value값을 기준으로 사전형 전체를 출력

# Value값을 기준으로 dict를 정렬해서 출력
sorted(dict_info.items(), key=lambda x: x[1])

# 역순으로 출력(큰 순서대로)
sorted(dict_info.items(), key=lambda x: x[1], reverse=True)

 

5.사전형이 담긴 리스트를 정렬하기

list_info = 
[{'kg' : 65, 'cm':176},
 {'kg' : 30, 'cm':135},
 {'kg' : 50, 'cm':153},
 {'kg' : 65, 'cm':190},
 {'kg' : 63, 'cm':152},
 {'kg' : 90, 'cm':171}]

print(sorted(list_info, key=lambda x: (x['kg'])))

# 여러 개 기준일 경우, 적은 순서대로 정렬됨 (1.kg, 2.cm)
print(sorted(list_info, key=lambda x: (x['kg'], x['cm'])))

# 내림 차순으로 할 경우
print(sorted(list_info, key=lambda x: (x['kg'], x['cm']), reverse=True))

lambda? 람다란?

재사용이 불가능한 1회성 함수를 람다함수라고 합니다.

 

람다의 사용법은 다음과 같습니다.

 

lambda [변수]:  [함수 내용] 

 

파이썬에서는 사전형에서 dict값은 {key: value} 구조를 지니기 때문에

 

x[0] 으로 하면 key 값이 되고, x[1]로 설정하면 value값을 기준으로 됩니다.

 

lambda 함수를 왜 쓰냐고 하면, 함수를 쓰긴 써야겠는데

 

다음과 같이 단순한 구조의 함수 같은 경우엔 일일이 def func()를 쓰는게 더 번거롭기 때문입니다.

 

그리고, 이렇게 쓴 def func()의 함수 구조는 다음에도 쓸 수 있다면, 유용하겠지만 한번만 쓰고 만다면

 

깔끔하게 리팩토링하는 경우가 아니라면, 배보다 배꼽이 더 큰 상황이 벌어지기 때문입니다.

 

감사합니다.

 

[참고] : inma.tistory.com/138

 

728x90