Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 키를 기준으로 딕셔너리 정렬하는 방법

Python에서 키로 딕셔너리 정렬하기

Python의 표준 배포판에는 collections 모듈이 포함되어 있으며, 이 모듈에는 고성능 컨테이너 데이터 타입들이 정의되어 있습니다. 그중 OrderedDict는 딕셔너리의 하위 클래스로, 항목이 추가된 순서를 기억하는 특징이 있습니다. OrderedDict 객체를 순회(iteration)하면 키가 처음 추가된 순서대로 항목들이 반환됩니다.

>>> from collections import OrderedDict
>>> D = {5:'fff', 3:'ttt', 1:'ooo',4:'bbb', 2:'ddd'}
>>> OrderedDict(D.items())
OrderedDict([(5, 'fff'), (3, 'ttt'), (1, 'ooo'), (4, 'bbb'), (2, 'ddd')])

sorted() 함수와 함께 사용하기

딕셔너리를 키 기준으로 정렬하려면 sorted() 함수를 함께 사용해야 합니다. sorted() 함수는 반복 가능한(iterable) 객체의 요소들을 지정된 순서대로 정렬하며, 정렬 기준으로 사용할 함수를 인자로 받습니다.

키를 기준으로 정렬하는 것이 목적이므로, 각 항목(키-값 쌍의 튜플)에서 0번째 요소, 즉 키를 람다(lambda) 함수로 추출하여 정렬 기준으로 지정합니다.

>>> D = {5:'fff', 3:'ttt', 1:'ooo',4:'bbb', 2:'ddd'}
>>> OrderedDict(sorted(D.items(), key = lambda t: t[0]))
OrderedDict([(1, 'ooo'), (2, 'ddd'), (3, 'ttt'), (4, 'bbb'), (5, 'fff')])

일반 딕셔너리로 변환하기

정렬된 OrderedDict 객체는 필요에 따라 일반 딕셔너리(dict) 객체로 다시 변환할 수 있습니다.

>>> D1 = dict(OrderedDict(sorted(D.items(), key = lambda t: t[0])))
>>> D1
{1: 'ooo', 2: 'ddd', 3: 'ttt', 4: 'bbb', 5: 'fff'}

참고: Python 3.7부터는 일반 딕셔너리도 삽입 순서를 유지하므로, 단순히 dict(sorted(D.items()))만으로도 키 기준 정렬된 딕셔너리를 얻을 수 있습니다. 다만 하위 버전 호환성이나 순서 보장이 명시적으로 필요한 경우에는 OrderedDict를 사용하는 것이 좋습니다.