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

Jinku Hu 2023년1월30일
  1. 값으로 파이썬 정렬 사전-정렬 된 값만 가져 오기
  2. operator.itemgetter 를 사용하여 파이썬 사전 정렬
  3. sorted 키에서 lambda 함수를 사용하여 파이썬을 사전으로 정렬
  4. 파이썬 사전 정렬에서 사전 호환 결과를 얻기위한 OrderedDict
값으로 파이썬 사전을 정렬하는 방법

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

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

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 서브 클래스입니다.

작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

관련 문장 - Python Dictionary