HOWTO · Python

값으로 파이썬 사전을 정렬하는 방법

파이썬 사전을 값으로 정렬하는 몇 가지 방법을 보여줍니다.

파이썬 사전은 순서가없는 데이터 유형이므로 키나 값으로 파이썬 사전을 정렬 할 수 없습니다. 그러나 목록과 같은 다른 데이터 형식으로 정렬 된 파이썬 사전을 얻을 수 있습니다.

아래와 같은 사전이 있다고 가정합니다.

exampleDict = {"first": 3, "second": 4, "third": 2, "fourth": 1}

값으로 파이썬 정렬 사전-정렬 된 값만 가져 오기

sortedDict = sorted(exampleDict.values())
# Out: [1, 2, 3, 4]

operator.itemgetter 를 사용하여 파이썬 사전 정렬

import operator

sortedDict = sorted(exampleDict.items(), key=operator.itemgetter(1))
# Out: [('fourth', 1), ('third', 2), ('first', 3), ('second', 4)]

exampleDict.items 는 사전 요소의 키-값 쌍을 반환합니다. key=operator.itemgetter(1)은 비교 키가 사전의 값을 지정하는 반면,operator.itemgetter(0)은 사전 키의 비교 키를 갖습니다.

sorted 키에서 lambda 함수를 사용하여 파이썬을 사전으로 정렬

operator.itemgetter 대신 비교 키를 얻기 위해 lambda 함수를 사용할 수도 있습니다.

sortedDict = sorted(exampleDict.items(), key=lambda x: x[1])
# Out: [('fourth', 1), ('third', 2), ('first', 3), ('second', 4)]

exampleDict.items()는 사전의 키-값 쌍 목록을 반환하며 해당 요소의 데이터 유형은 튜플입니다. x 는이 튜플의 요소입니다. 여기서 x[0]이 키이고 x[1]이 값입니다. key=lambda x:x[1]는 비교 키가 사전 요소의 값임을 나타냅니다.

값을 내림차순으로 정렬해야하는 경우 선택적 매개 변수 reverseTrue 로 설정할 수 있습니다.

sortedDict = sorted(exampleDict.items(), key=lambda x: x[1], reverse=True)
# Out: [('second', 4), ('first', 3), ('third', 2), ('fourth', 1)]

파이썬 사전 정렬에서 사전 호환 결과를 얻기위한 OrderedDict

위에 표시된 예제 코드는 결과를 사전 유형이 아닌 목록으로 리턴합니다. 결과를 사전 호환 유형으로 유지하려면 Python 2.7에서 소개 된 OrderedDict가 올바른 선택입니다.

from collections import OrderedDict

sortedDict = OrderedDict(sorted(exampleDict.items(), key=lambda x: x[1]))
# Out: OrderedDict([('fourth', 1), ('third', 2), ('first', 3), ('second', 4)])

OrderedDict 는 일반적인 메소드를 지원하고 키가 처음으로 삽입 된 순서를 기억하는 Python dict 서브 클래스입니다.