콘텐츠로 건너뛰기

값에 따라 Python 딕셔너리 정렬하기

[

파이썬 딕셔너리 정렬하기: 값, 키, 그리고 더 많은

인용: Ian Currie data-structures intermediate

파이썬 딕셔너리의 키-값 쌍을 정렬하고 싶은 경우가 있을 수 있습니다. 아마도 딕셔너리를 sorted() 함수에 전달해 보았지만 예상한 결과가 나오지 않았을 수도 있습니다. 이 튜토리얼에서는 파이썬에서 딕셔너리를 정렬하기 위해 알아야 할 모든 내용을 다룹니다.

이 튜토리얼에서 다룰 내용:

  • sorted() 함수 사용 방법 검토
  • 딕셔너리 (view)를 사용하여 **반복(iterate)**하는 방법 학습
  • 정렬 중에 딕셔너리가 리스트로 캐스트되는 방법 이해
  • 값을, 키, 또는 중첩된 속성별로 딕셔너리를 정렬하기 위해 **정렬 키(sort key)**를 지정하는 방법 학습
  • 딕셔너리 축약(comprehensions)과 dict() 생성자(constructor)를 사용하여 딕셔너리 재구축 방법 검토
  • 키-값 데이터에 대한 대체 데이터 구조(data structure) 검토

이 중간 과정에서 timeit 모듈을 사용하여 코드 시간을 측정하고 다른 방법으로 키-값 데이터를 정렬하는 방법을 비교할 수 있습니다. 또한 정렬된 딕셔너리가 실제로 최선의 선택인지 고려하게 될 것입니다. 왜냐하면 이는 특히 흔한 패턴은 아니기 때문입니다.

먼저 딕셔너리를 정렬하기 전에 몇 가지 기본 지식을 알아보겠습니다.

파이썬에서 딕셔너리 순서 다시 확인하기

예전에는 순서가 중요한 딕셔너리를 데이터 구조로 유지하기 위해 몇 가지 Tricks를 사용할 수 있었습니다. 그러나 최신 버전의 파이썬을 사용하면 내부적으로 딕셔너리의 순서가 보장되기 때문에 딕셔너리를 정렬하거나 순회할 때 순서에 대한 추가적인 작업을 할 필요가 없습니다.

이제 딕셔너리를 정렬하는 방법에 대해 더 자세히 알아보겠습니다.

sorted() 함수 사용

sorted() 함수는 모든 반복 가능한(iterable) 객체에 대해 작동합니다. 따라서 딕셔너리에도 사용할 수 있습니다. sorted() 함수는 딕셔너리의 키를 정렬하여 정렬된 키를 갖는 새로운 리스트를 반환합니다.

아래 코드 예제를 참고하세요:

>>> d = {'apple': 5, 'banana': 3, 'orange': 9, 'grape': 1}
>>> sorted(d)
['apple', 'banana', 'grape', 'orange']

위 예제에서 d 딕셔너리의 키들이 알파벳 순으로 정렬되어 반환됩니다. 이때 주의해야 할 점은 sorted() 함수가 딕셔너리의 값(value)에 대해 정렬하지 않는다는 것입니다. 여기서 반환되는 것은 정렬된 키의 리스트입니다.