콘텐츠로 건너뛰기

파이썬에서 키로 사전 정렬하는 방법

[

Python 사전(Dictionary)의 키(Key)를 기준으로 정렬하는 방법

Python에서 사전(Dictionary)의 정렬을 이해하는 방법

Python에서 사전(Dictionary)을 생성하고 키(Key)-값(Value) 쌍을 정렬하는 방법에 대해 알아보겠습니다. 사전은 내부적으로 해시 테이블로 구현되어 있으며, 기존에는 순서가 없는 데이터 구조였습니다. 하지만 Python 3.6부터는 사전의 삽입 순서가 보존되도록 변경되었습니다. Python 3.7부터는 사전의 삽입 순서가 보장되기 때문에 정렬 작업을 수행할 수 있습니다.

Python에서 사전을 정렬하는 방법

다음은 Python에서 사전을 정렬하기 위한 여러 가지 방법과 그에 대한 예제 코드입니다.

1. sorted() 함수 사용하기

sorted() 함수를 사용하여 사전의 키나 값을 정렬할 수 있습니다. sorted() 함수는 정렬된 결과를 새로운 리스트로 반환합니다.

my_dict = {'c': 5, 'a': 10, 'b': 8}
sorted_keys = sorted(my_dict.keys())
sorted_values = sorted(my_dict.values())
print(sorted_keys) # ['a', 'b', 'c']
print(sorted_values) # [5, 8, 10]

2. key 파라미터와 람다 함수 사용하기

sorted() 함수의 key 파라미터에 람다 함수를 사용하여 사전의 특정 키 또는 값을 기준으로 정렬할 수 있습니다.

my_dict = {'c': 5, 'a': 10, 'b': 8}
sorted_by_key = sorted(my_dict.items(), key=lambda x: x[0])
sorted_by_value = sorted(my_dict.items(), key=lambda x: x[1])
print(sorted_by_key) # [('a', 10), ('b', 8), ('c', 5)]
print(sorted_by_value) # [('c', 5), ('b', 8), ('a', 10)]

3. itemgetter() 함수를 사용하여 성능 향상하기

operator 모듈의 itemgetter() 함수를 사용하여 사전을 정렬할 수 있습니다. itemgetter() 함수는 정렬 작업에 있어서 성능을 향상시킬 수 있습니다.

from operator import itemgetter
my_dict = {'c': 5, 'a': 10, 'b': 8}
sorted_by_key = sorted(my_dict.items(), key=itemgetter(0))
sorted_by_value = sorted(my_dict.items(), key=itemgetter(1))
print(sorted_by_key) # [('a', 10), ('b', 8), ('c', 5)]
print(sorted_by_value) # [('c', 5), ('b', 8), ('a', 10)]

정렬된 결과로부터 사전으로 변환하기

sorted() 함수의 결과는 정렬된 리스트이므로, 다시 사전으로 변환하려면 dict() 생성자 함수를 사용하면 됩니다.

my_dict = {'c': 5, 'a': 10, 'b': 8}
sorted_keys = sorted(my_dict.keys())
sorted_dict = dict([(key, my_dict[key]) for key in sorted_keys])
print(sorted_dict) # {'a': 10, 'b': 8, 'c': 5}

Conclusion

Python에서 사전(Dictionary)을 키(Key)를 기준으로 정렬하는 방법에 대해 알아보았습니다. sorted() 함수와 key 파라미터를 이용하여 사전을 정렬할 수 있으며, itemgetter() 함수를 사용하여 성능을 향상시킬 수도 있습니다. 또한, 정렬된 결과를 다시 사전으로 변환하는 방법도 배웠습니다. 이러한 방법들을 익혀서 사전의 정렬 작업을 효과적으로 수행할 수 있습니다.