HOWTO · Python

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

Python 사전은 기본적으로 정렬되지 않습니다. 사전에 삽입 된 요소의 순서를 기록하는 OrderedDict 데이터 유형과 오름차순으로 정렬하는 정렬 된 함수를 사용합니다.

이 페이지의 내용

파이썬 사전은 키의 해시를 평가하여 항목을 유지하는 해시 테이블과 동일하며 항목의 순서를 예상 할 수 없습니다. 이 기사에서는 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