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

개요

Python의 사전은 데이터를 키-값 쌍으로 저장하는 항목 모음입니다. Python 3.7 이상 버전에서 사전은 항목 삽입 순서로 정렬됩니다. 이전 버전에서는 순서가 지정되지 않았습니다.

이 기사에서는 포함된 값을 기반으로 사전을 정렬하는 방법을 살펴보겠습니다.

다음을 사용하여 사전 정렬 for 고리

의 도움으로 사전을 정렬할 수 있습니다. for 고리. 먼저, 우리는 sorted() 사전의 값을 정렬하는 함수입니다. 그런 다음 정렬된 값을 반복하면서 각 값에 대한 키를 찾습니다. 이러한 키-값 쌍을 정렬된 순서로 새 사전에 추가합니다.

참고 : 정렬을 사용하면 사전을 제자리에서 재정렬할 수 없습니다. 우리는 완전히 새로운 빈 사전에 순서쌍을 쓰고 있습니다.

dict1 = {1: 1, 2: 9, 3: 4}
sorted_values = sorted(dict1.values()) 
sorted_dict = {}

for i in sorted_values:
    for k in dict1.keys():
        if dict1[k] == i:
            sorted_dict[k] = dict1[k]

print(sorted_dict)

Python 인터프리터로 이것을 실행하면 다음과 같이 표시됩니다.

{1: 1, 3: 4, 2: 9}

루프를 사용하여 정렬하는 방법을 살펴보았으므로 이제 sorted() 기능.

다음을 사용하여 사전 정렬 정렬 됨 () 함수

우리는 이전에 사용 sorted() 배열의 값을 정렬하는 함수. 사전을 정렬할 때 인수를 하나 더 전달할 수 있습니다. sorted() 다음과 같은 기능 : sorted(dict1, key=dict1.get).

여기 key 정렬을 위해 값을 비교하기 전에 각 요소에 대해 호출되는 함수입니다. 그만큼 get() 사전 객체의 메소드는 사전의 키 값을 반환합니다.

XNUMXD덴탈의 sorted(dict1, key=dict1.get) 표현식은 값이 순서대로 정렬된 키 목록을 반환합니다. 여기에서 정렬된 새 사전을 만들 수 있습니다.

dict1 = {1: 1, 2: 9, 3: 4}
sorted_dict = {}
sorted_keys = sorted(dict1, key=dict1.get)  

for w in sorted_keys:
    sorted_dict[w] = dict1[w]

print(sorted_dict) 

사용법 - sorted() 함수는 사용할 때 작성해야 하는 코드의 양을 줄였습니다. for 루프. 그러나 우리는 더 결합할 수 있습니다 sorted() 기능 itemgetter() 값으로 사전을 정렬하는 보다 간결한 솔루션을 위한 함수입니다.

다음을 사용하여 사전 정렬 연산자 모듈 및 아이템 게터()

XNUMXD덴탈의 operator 모듈에는 다음이 포함됩니다. itemgetter() 기능. 이 함수는 개체에서 항목을 반환하는 호출 가능한 개체를 반환합니다.

예를 들어 itemgetter() 키가 있는 사전의 값을 반환하는 호출 가능한 객체를 생성하려면 2:

import operator

dict1 = {1: 1, 2: 9}
get_item_with_key_2 = operator.itemgetter(2)

print(get_item_with_key_2(dict1))  

모든 사전은 items() 방법. 이 함수는 사전의 키-값 쌍을 튜플 목록으로 반환합니다. 다음을 사용하여 튜플 목록을 정렬할 수 있습니다. itemgetter() 튜플의 두 번째 값, 즉 사전의 키 값을 가져오는 함수입니다.

정렬되면 해당 값을 기반으로 사전을 만들 수 있습니다.

import operator

dict1 = {1: 1, 2: 9, 3: 4}
sorted_tuples = sorted(dict1.items(), key=operator.itemgetter(1))
print(sorted_tuples)  
sorted_dict = {k: v for k, v in sorted_tuples}

print(sorted_dict) 

훨씬 적은 노력으로 값에 따라 정렬된 사전이 있습니다!

으로 key 인수는 모든 함수를 허용하므로 람다 함수를 사용하여 사전 값을 반환하여 정렬할 수 있습니다. 방법을 봅시다.

Lambda 함수를 사용하여 사전 정렬

Lambda 함수는 Python의 익명 또는 이름 없는 함수입니다. 람다 함수를 사용하여 가져올 필요 없이 사전 항목의 값을 가져올 수 있습니다. operator 모듈 itemgetter(). 람다에 대해 자세히 알아보려면 람다 가이드에서 읽어보십시오. Python의 Lambda 함수.

모범 사례, 업계에서 인정하는 표준 및 포함된 치트 시트가 포함된 Git 학습에 대한 실습 가이드를 확인하십시오. 인터넷 검색 Git 명령을 중지하고 실제로 배움 이것!

람다 함수를 사용하여 값을 기준으로 사전을 정렬해 보겠습니다. key 인수 sorted():

dict1 = {1: 1, 2: 9, 3: 4}
sorted_tuples = sorted(dict1.items(), key=lambda item: item[1])
print(sorted_tuples)  
sorted_dict = {k: v for k, v in sorted_tuples}

print(sorted_dict)  

지금까지 논의한 방법은 Python 3.7 이상에서만 작동합니다. 이전 버전의 Python에서 무엇을 할 수 있는지 봅시다.

정렬된 값으로 새 사전 반환

값으로 사전을 정렬한 후 Python 3.7 이전 버전에서 정렬된 사전을 유지하려면 다음을 사용해야 합니다. OrderedDict – 에서 사용 가능 collections 기준 치수. 이러한 개체는 삽입 순서를 유지하는 사전입니다.

다음은 정렬 및 사용의 예입니다. OrderedDict:

import operator
from collections import OrderedDict

dict1 = {1: 1, 2: 9, 3: 4}
sorted_tuples = sorted(dict1.items(), key=operator.itemgetter(1))
print(sorted_tuples)  

sorted_dict = OrderedDict()
for k, v in sorted_tuples:
    sorted_dict[k] = v

print(sorted_dict)  

결론

이 튜토리얼은 사전이 값을 기반으로 정렬하는 방법을 보여주었습니다. 먼저 두 개의 for 루프를 사용하여 사전을 정렬했습니다. 그런 다음 다음을 사용하여 정렬을 개선했습니다. sorted() 기능. 우리도 보았다 itemgetter() 에서 기능 operator 모듈을 사용하면 솔루션을 더 간결하게 만들 수 있습니다.

마지막으로 3.7 미만의 Python 버전에서 작동하도록 솔루션을 조정했습니다.

변형 sorted() 함수는 값으로 사전을 정렬하는 데 가장 널리 사용되며 신뢰할 수 있습니다.

타임 스탬프 :

더보기 스택카부스