[Python] collections.OrderedDict 정렬

2021. 1. 5. 11:38Programming Language/Python

OrderedDict란?

순서가 있는 딕셔너리. 파이썬 3.7+에선 기본 딕셔너리도 순서가 있지만 코딩테스트 환경이 3.6이하 버전 일수도 있어
OrderedDict를 쓰는 편이 안전하다.

OrderedDict 정렬

  • sort()나 sorted() 메소드를 사용.
  • key=파라미터로 기준을 설정 할 수 있다.
  • revers=파라미터로 오름차순, 내림차순 설정이 가능하다. revers=True는 내림차순, reverse=False는 오름차순이며 Default는 오름차순(reverse=False)이다.

sort()sorted()는 원본이 바뀌는지, 안바뀌는지의 차이이고, 원본이 바뀌지 않는 sort()의 실행속도가 더 빠르다

import collections
from typing import OrderedDict

# 기본 딕셔너리
dic = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

# Key 기준 정렬 (오름차순)
sorted_dic1 = OrderedDict(
    sorted(dic.items(), key=lambda x: x[0], reverse=False))

# Key 기준 정렬 (내림차순)
sorted_dic2 = OrderedDict(
    sorted(dic.items(), key=lambda x: x[0], reverse=True))

# Value 기준 정렬 (오름차순)
sorted_dic3 = OrderedDict(
    sorted(dic.items(), key=lambda x: x[1], reverse=False))

# Value 기준 정렬 (내림차순)
sorted_dic4 = OrderedDict(
    sorted(dic.items(), key=lambda x: x[1], reverse=True))

print('Key 기준, 오름차순: ', sorted_dic1)
print('Key 기준, 내림차순: ', sorted_dic2)
print('Value 기준, 오름차순: ', sorted_dic3)
print('Value 기준, 내림차순: ', sorted_dic4)

결과
Key 기준, 오름차순: OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4)])
Key 기준, 내림차순: OrderedDict([('d', 4), ('c', 3), ('b', 2), ('a', 1)])
Value 기준, 오름차순: OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4)])
Value 기준, 내림차순: OrderedDict([('d', 4), ('c', 3), ('b', 2), ('a', 1)])

반응형