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

Azaz Farooq 2023년10월10일
  1. dict.keys()메소드를 사용하여 키로 파이썬 정렬 사전
  2. dict.items()메서드를 사용하여 키로 파이썬 정렬 사전
  3. OrderedDict()메서드를 사용하여 키로 파이썬 정렬 사전
  4. Python에서 역순으로 사전 정렬
  5. 사용자 지정key함수 메서드를 사용하는 Python 정렬 사전
파이썬에서 키로 사전을 정렬하는 방법

파이썬 사전은 키의 해시를 평가하여 항목을 유지하는 해시 테이블과 동일하며 항목의 순서를 예상 할 수 없습니다. 이 기사에서는 Python에서 키별로 사전을 정렬하는 방법을 소개합니다.

dict.keys()메소드를 사용하여 키로 파이썬 정렬 사전

아래 사전을 예로 들어 보겠습니다.

dict = {"hello": 56, "at": 23, "test": 43, "this": 43}

dict.keys()의 출력은 다음과 같습니다.

dict_keys(["hello", "at", "test", "this"])

이 정렬되지 않은 키 목록에서 새로운, 정렬 된 사전을 만들 수 있습니다.

sorted(dict.keys())

출력:

['at', 'hello', 'test', 'this']

사전에서 각 항목을 선택하여이 정렬 된 목록에 반복적으로 정렬을 적용합니다.

for key in sorted(dict.keys()):
    print(key, "::", dict[key])

출력:

at :: 23
hello :: 56
test :: 43
this :: 43

dict.items()메서드를 사용하여 키로 파이썬 정렬 사전

파이썬에서dict.items()메서드를 사용하여 키로 사전을 정렬 할 수도 있습니다.

키-값 쌍을 보유하는 목록을 생성합니까?

dict.items()

출력:

dict_items([('hello', 56), ('at', 23), ('test', 43), ('this', 43)])

다음 기능으로 정렬 된 목록을 만들 수 있습니다. 키 값에 따라 사전 항목을 정렬합니다.

sorted(dict.keys())

출력:

['at', 'hello', 'test', 'this']

이제 사전에서 정렬 키-값 쌍을 생성하기 위해 다음 코드를 사용합니다.

for elem in sorted(dict.items()):
    print(elem[0], " ::", elem[1])

출력:

at ::23
hello ::56
test ::43
this ::43

복잡성 측면에서 이전 접근 방식보다 더 강력합니다. dict.key()처럼 반복 가능한 목록을 정렬 한 후 키-값을 확인할 필요가 없기 때문입니다.

OrderedDict()메서드를 사용하여 키로 파이썬 정렬 사전

또는 collections모듈을 사용하여 키-값별로 사전 항목을 정렬 할 수 있습니다.

import collections

d = {2: 13, 1: 9, 4: 25, 3: 0}
result = collections.OrderedDict(sorted(d.items()))
print(result)

출력:

OrderedDict([(1, 9), (2, 13), (3, 0), (4, 25)])

Python에서 역순으로 사전 정렬

이전에는 사전 항목을 오름차순으로 정렬했습니다. 이제 사전 항목을 내림차순으로 정렬하는 몇 가지 방법에 대해 설명합니다.

구문은 다음과 같습니다.

sorted(iterable_sequence, reverse=True)

다음 코드는 사전 항목을 정렬하고 뒤집습니다.

dict = {"hello": 56, "at": 23, "test": 43, "this": 43}
for elem in sorted(dict.items(), reverse=True):
    print(elem[0], " ::", elem[1])

reverse = true매개 변수는 정렬 된 사전이 반전되도록합니다.

출력:

this ::43

test ::43

hello ::56

at ::23

사용자 지정key함수 메서드를 사용하는 Python 정렬 사전

이 메소드는 key문자열의 길이를 사용하여 사전 항목을 정렬합니다.

sorted(iterable_sequence, key=Function)

문자열 크기를 반환하는 lambda함수는 key매개 변수에 제공됩니다.

listofTuples = sorted(dict.items() ,  key=lambda x: len (x[0] ) )
for elem in listofTuples :
    print(elem[0] , " ::" , elem[1] )

출력:

at ::23

test ::43

this ::43

hello ::56

관련 문장 - Python Dictionary