Seongwon Lim

[Python] 딕셔너리(Dictionary) 정렬하는 법 본문

Python

[Python] 딕셔너리(Dictionary) 정렬하는 법

limsw 2022. 7. 9. 21:14
반응형

서론

이번 글에서는 파이썬의 딕셔너리를 Key, Value를 기준으로 정렬하는 방법을 간단하게 알아보고자 한다.

키(Key)를 기준으로 정렬하기

키를 기준으로 정렬할 때에는 sorted() 함수와 딕셔너리의 items() 함수를 이용한다.

dic = {"c": 100, "a": 10, "b": 50, "f": 3, "m": 1}
print(dic) # {'c': 100, 'a': 10, 'b': 50, 'f': 3, 'm': 1}

sorted_by_key = sorted(dic.items())
print(sorted_by_key) # [('a', 10), ('b', 50), ('c', 100), ('f', 3), ('m', 1)]

그러나 sorted() 함수를 사용하는 경우 반환 타입이 딕셔너리 형태가 아니라 리스트 안에 튜플 형태로 저장된 것을 확인할 수 있다.

다시 딕셔너리 타입으로 바꿔주기 위해서는 dict() 함수를 사용하면 된다.

sorted_by_key = dict(sorted(dic.items()))

print(sorted_by_key) # {'a': 10, 'b': 50, 'c': 100, 'f': 3, 'm': 1}

 

 

또한, items() 함수를 사용하지 않고 딕셔너리 자체를 sorted() 한다면 다음과 같은 결과가 출력된다.

dic = {"c": 100, "a": 10, "b": 50, "f": 3, "m": 1}

print(sorted(dic)) # ['a', 'b', 'c', 'f', 'm']

딕셔너리의 값(value)는 제거되고 키(key)만 추출하여 키를 오름차순으로 정렬한 리스트를 반환한다.

 

만약 내림차순으로 정렬하고자 하는 경우 sorted() 함수의 두 번째 인자로 reverse=True 를 넣어주면 된다.

값(Value)를 기준으로 정렬하기

딕셔너리의 값을 기준으로 정렬하는 방법은 키를 기준으로 정렬하는 방법과 비슷하다.

그러나 다른 점은 sorted() 함수의 두 번째 인자로 람다 함수가 들어간다는 것이다.

 

예시를 통해 값을 기준으로 정렬하는 방법을 확인해보자.

dic = {"c": 100, "a": 10, "b": 50, "f": 3, "m": 1}

sorted_by_value = sorted(dic.items(), key=lambda x: x[1])
print(sorted_by_value) # [('m', 1), ('f', 3), ('a', 10), ('b', 50), ('c', 100)]

마찬가지로 딕셔너리 타입으로 변경하기 위해서는 sorted() 앞에 dict()를 붙여주면 된다.

 

사실 키를 기준하는 방법도 람다 표현식을 사용하여 나타낼 수 있다. 그러나, 람다 표현식이 생략된 경우에는 자동적으로 딕셔너리의 키를 기준으로 정렬을 하기 때문에 생략하여 표현할 수 있었던 것이다.

sorted_by_key = sorted(dic.items(), key=lambda x: x[0])

값을 기준으로 내림차순 정렬을 하고 싶다면 마찬가지로 세 번째 인자에 reverse=True 명령어를 넣어주면 된다.

dic = {"c": 100, "a": 10, "b": 50, "f": 3, "m": 1}

sorted_by_value = sorted(dic.items(), key=lambda x: x[1], reverse=True)
print(sorted_by_value) # [('c', 100), ('b', 50), ('a', 10), ('f', 3), ('m', 1)]
Comments