본문 바로가기

라이브러리

[파이썬] dict 정렬하는 3가지 방법

파이썬 딕셔너리(dictionary)는 키-값 쌍을 저장하는 자료형입니다. 딕셔너리는 내부적으로 해시 테이블로 구현되어 있으며, 키를 사용하여 값을 검색하고 참조할 수 있습니다. 딕셔너리는 순서를 보장하지 않는 자료형이기 때문에, 딕셔너리를 정렬하려면 몇 가지 방법을 사용해야 합니다.

 

1. sorted() 함수와 lambda 함수 사용

파이썬의 내장 함수인 sorted() 함수를 사용하면, 딕셔너리의 키나 값을 정렬할 수 있습니다. sorted() 함수는 리스트, 튜플, 딕셔너리와 같은 순회 가능한(iterable) 객체를 받아서 정렬된 리스트를 반환합니다. 딕셔너리를 정렬하려면, sorted() 함수에 딕셔너리의 items() 메소드를 이용하여 (키, 값) 쌍의 리스트를 만들고, 정렬 기준으로 사용할 값을 선택하여 lambda 함수를 만들어서 sorted() 함수의 key 인자로 전달합니다.

 

d = {'apple': 3, 'banana': 2, 'cherry': 1}

# 키를 기준으로 정렬
sorted_d = sorted(d.items(), key=lambda x: x[0])
print(sorted_d)

# 값(value)를 기준으로 정렬
sorted_d = sorted(d.items(), key=lambda x: x[1])
print(sorted_d)


위 코드에서, lambda 함수는 (키, 값) 쌍을 인자로 받아서, 각각의 키 또는 값에 대한 정렬 기준을 반환합니다. 이 예제에서는 키를 기준으로 정렬한 뒤, 값을 기준으로 정렬한 결과를 출력합니다.


2. operator 모듈의 itemgetter() 함수를 사용


파이썬의 내장 모듈인 operator 모듈에는 itemgetter() 함수가 있습니다. 이 함수를 사용하면, 딕셔너리를 정렬할 때 더 편리하게 사용할 수 있습니다. itemgetter() 함수는 정렬 기준으로 사용할 키의 인덱스를 인자로 받아서, 해당 키를 반환하는 함수를 생성합니다. 딕셔너리를 정렬할 때는, 딕셔너리의 items() 메소드를 이용하여 (키, 값) 쌍의 리스트를 만든 뒤, itemgetter() 함수를 이용하여 정렬 기준으로 사용할 키를 선택하고, sorted() 함수의 key 인자로 전달합니다.

 

from operator import itemgetter

d = {'apple': 3, 'banana': 2, 'cherry': 1}

# 키를 기준으로 정렬
sorted_d = sorted(d.items(), key=itemgetter(0))
print(sorted_d)

 

위 코드에서, itemgetter() 함수는 (키, 값) 쌍에서 0번째 인덱스에 해당하는 키를 선택하도록 설정됩니다. 이를 이용하여 키를 기준으로 정렬한 결과를 출력합니다.


3. OrderedDict 클래스를 사용하는 방법


파이썬의 collections 모듈에는 OrderedDict 클래스가 있습니다. 이 클래스는 딕셔너리와 비슷하게 키-값 쌍을 저장하지만, 항목들의 순서가 유지됩니다. OrderedDict 클래스를 사용하여 딕셔너리를 정렬하면, 추가적인 정렬 작업이 필요하지 않습니다.

 

from collections import OrderedDict

d = {'apple': 3, 'banana': 2, 'cherry': 1}

# 키를 기준으로 정렬된 OrderedDict 객체 생성
sorted_d = OrderedDict(sorted(d.items(), key=lambda x: x[0]))
print(sorted_d)

# 값(value)를 기준으로 정렬된 OrderedDict 객체 생성
sorted_d = OrderedDict(sorted(d.items(), key=lambda x: x[1]))
print(sorted_d)


위 코드에서, sorted() 함수를 사용하여 딕셔너리를 정렬한 뒤, OrderedDict 클래스를 이용하여 정렬된 딕셔너리를 생성합니다. 이를 이용하여 키를 기준으로 정렬된 결과와 값을 기준으로 정렬된 결과를 출력합니다.

딕셔너리를 정렬하는 방법은 다양하지만, 위에서 설명한 방법들을 이용하면 간단하게 딕셔너리를 정렬할 수 있습니다.