일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Android
- MongoDB
- OOAD
- algorithm
- python
- mysql
- S3
- React
- sequelize
- typeorm
- wireshark
- Util
- linux
- Scheduling
- Crawling
- AWS
- css
- ubuntu
- Express
- OS
- TypeScript
- node.js
- mongoose
- Kotlin
- postman
- Network
- docker
- macos
- DATABASE
- HTML
- Today
- Total
Seongwon Lim
[Python] 딕셔너리(Dictionary) 정렬하는 법 본문
서론
이번 글에서는 파이썬의 딕셔너리를 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)]
'Python' 카테고리의 다른 글
[Python] enumerate() 함수 사용 방법 (0) | 2022.07.13 |
---|---|
[Python] 숫자, 문자열 거꾸로 출력하기 (0) | 2022.07.12 |
[Python] itertools 라이브러리를 이용한 조합&순열 구하기 (0) | 2022.07.08 |
[Python] json 데이터를 dictionary로 변경하기 (0) | 2022.05.30 |
[Python] Pandas to_csv()를 이용한 csv 파일 저장 (0) | 2022.05.30 |