Python, 사전이 주어지면 키 또는 값을 기준으로 정렬을 수행합니다. [ 해당 Python>=3.6v ].
입력 : test_dict = {Gfg : 5, is : 7, Best : 2} 산출 : {'최고': 2, 'Gfg': 5, 'is': 7}, {'is': 7, 'Gfg': 5, 'Best': 2} 설명 : 키를 기준으로 오름차순 및 역순으로 정렬됩니다. 입력 : test_dict = {최고: 2, for: 9, 괴짜: 8} 산출 : {'최고': 2, 'Gfg': 5, 'for': 9}, {'for': 9, 'geeks': 8, 'Best': 2} 설명 : 값을 기준으로 오름차순 및 역순으로 정렬됩니다.
사례 1: 키를 기준으로 정렬
이 작업은 sorted()를 사용하여 수행됩니다. 여기서는 items()로 추출된 사전 항목의 첫 번째 인덱스를 사용하여 키를 추출하고 이를 사용자 정의 람다 함수로 key에 전달하여 키별로 정렬합니다. 역 정렬을 수행하려면 reverse=True가 추가됩니다.
파이썬3
정수를 문자열로 변환 자바
# Python3 code to demonstrate working of> # Sort a Dictionary> # Sort by Keys> # initializing dictionary> test_dict>=> {>'Gfg'> :>5>,>'is'> :>7>,>'Best'> :>2>,>'for'> :>9>,>'geeks'> :>8>}> # printing original dictionary> print>(>'The original dictionary is : '> +> str>(test_dict))> # using items() to get all items> # lambda function is passed in key to perform sort by key> res>=> {key: val>for> key, val>in> sorted>(test_dict.items(), key>=> lambda> ele: ele[>0>])}> # printing result> print>(>'Result dictionary sorted by keys : '> +> str>(res))> # using items() to get all items> # lambda function is passed in key to perform sort by key> # adding 'reversed = True' for reversed order> res>=> {key: val>for> key, val>in> sorted>(test_dict.items(), key>=> lambda> ele: ele[>0>], reverse>=> True>)}> # printing result> print>(>'Result dictionary sorted by keys ( in reversed order ) : '> +> str>(res))> |
>
>산출
The original dictionary is : {'Gfg': 5, 'is': 7, 'Best': 2, 'for': 9, 'geeks': 8} Result dictionary sorted by keys : {'Best': 2, 'Gfg': 5, 'for': 9, 'geeks': 8, 'is': 7} Result dictionary sorted by keys ( in reversed order ) : {'is': 7, 'geeks': 8, 'for': 9, 'Gfg': 5, 'Best': 2}> 사례 2: 값을 기준으로 정렬
이 작업은 위와 비슷한 방식으로 수행할 수 있습니다. 유일한 차이점은 값을 추출할 때 items()의 두 번째 요소가 비교기로 전달된다는 것입니다.
파이썬3
# Python3 code to demonstrate working of> # Sort a Dictionary> # Sort by Values> # initializing dictionary> test_dict>=> {>'Gfg'> :>5>,>'is'> :>7>,>'Best'> :>2>,>'for'> :>9>,>'geeks'> :>8>}> # printing original dictionary> print>(>'The original dictionary is : '> +> str>(test_dict))> # using items() to get all items> # lambda function is passed in key to perform sort by key> # passing 2nd element of items()> res>=> {key: val>for> key, val>in> sorted>(test_dict.items(), key>=> lambda> ele: ele[>1>])}> # printing result> print>(>'Result dictionary sorted by values : '> +> str>(res))> # using items() to get all items> # lambda function is passed in key to perform sort by key> # passing 2nd element of items()> # adding 'reversed = True' for reversed order> res>=> {key: val>for> key, val>in> sorted>(test_dict.items(), key>=> lambda> ele: ele[>1>], reverse>=> True>)}> # printing result> print>(>'Result dictionary sorted by values ( in reversed order ) : '> +> str>(res))> |
>
>산출
The original dictionary is : {'Gfg': 5, 'is': 7, 'Best': 2, 'for': 9, 'geeks': 8} Result dictionary sorted by values : {'Best': 2, 'Gfg': 5, 'is': 7, 'geeks': 8, 'for': 9} Result dictionary sorted by values ( in reversed order ) : {'for': 9, 'geeks': 8, 'is': 7, 'Gfg': 5, 'Best': 2}> 방법#3: collections.OrderedDict() 및 sorted() 사용
접근하다
이 접근 방식은 sorted() 함수를 사용하여 해당 값을 기준으로 오름차순 또는 내림차순으로 사전을 정렬합니다. sorted() 함수는 사전의 items() 메소드와 각 튜플의 두 번째 요소(즉, 값) 또는 그 부정을 반환하는 키 함수와 함께 호출됩니다. 결과 튜플 목록은 OrderedDict() 생성자에 전달되어 원래 사전과 동일한 키-값 쌍을 사용하지만 값별로 정렬된 새로운 순서 사전을 생성합니다.
연산
1. 'test_dict' 사전에서 sorted() 함수를 호출하고 람다 함수를 'key' 인수로 전달합니다.
2. 람다 함수는 각 키-값 쌍을 입력으로 사용하고 원하는 순서에 따라 정렬할 키 또는 값을 반환합니다.
3. sorted() 함수를 사용하여 정렬된 키-값 쌍 목록을 반환합니다.
4. 정렬된 목록을 OrderedDict() 생성자에 전달하여 새로운 순서 사전을 생성합니다.
5. 주문한 사전을 반환합니다.
파이썬3
from> collections>import> OrderedDict> from> operator>import> itemgetter> def> sort_dict_by_value(test_dict):> >sorted_list>=> sorted>(test_dict.items(), key>=>itemgetter(>1>))> >return> OrderedDict(sorted_list)> def> sort_dict_by_value_reverse(test_dict):> >sorted_list>=> sorted>(test_dict.items(), key>=>itemgetter(>1>), reverse>=>True>)> >return> OrderedDict(sorted_list)> test_dict>=> {>'Gfg'> :>5>,>'is'> :>7>,>'Best'> :>2>,>'for'> :>9>,>'geeks'> :>8>}> print>(sort_dict_by_value(test_dict))> print>(sort_dict_by_value_reverse(test_dict))> |
>
>산출
OrderedDict([('Best', 2), ('Gfg', 5), ('is', 7), ('geeks', 8), ('for', 9)]) OrderedDict([('for', 9), ('geeks', 8), ('is', 7), ('Gfg', 5), ('Best', 2)])> 시간 복잡도: O(N log N), 여기서 N은 사전의 키-값 쌍 수입니다.
공간 복잡도: O(N), 정렬된 키-값 쌍을 저장하기 위해 새로운 순서 사전을 생성하기 때문입니다.
방법 4: 람다 함수를 키 매개변수로 사용하여 sorted() 메서드를 사용합니다.
단계는 다음과 같습니다.
샤와난드
- 정렬할 사전을 정의합니다.
- 값별로 사전을 정렬하려면 sorted() 메서드를 사용하세요.
- 정렬이 값별로 수행되도록 지정하려면 람다 함수를 sorted() 메서드의 주요 매개 변수로 전달합니다.
- dict() 생성자를 사용하여 정렬된 튜플 목록에서 새 사전을 만듭니다.
파이썬3
def> sort_dict_by_value_lambda(test_dict):> >sorted_list>=> sorted>(test_dict.items(), key>=>lambda> x: x[>1>])> >return> dict>(sorted_list)> def> sort_dict_by_value_lambda_reverse(test_dict):> >sorted_list>=> sorted>(test_dict.items(), key>=>lambda> x: x[>1>], reverse>=>True>)> >return> dict>(sorted_list)> test_dict>=> {>'Gfg'> :>5>,>'is'> :>7>,>'Best'> :>2>,>'for'> :>9>,>'geeks'> :>8>}> print>(sort_dict_by_value_lambda(test_dict))> print>(sort_dict_by_value_lambda_reverse(test_dict))> |
>
>산출
{'Best': 2, 'Gfg': 5, 'is': 7, 'geeks': 8, 'for': 9} {'for': 9, 'geeks': 8, 'is': 7, 'Gfg': 5, 'Best': 2}> 시간 복잡도: O(n log n) 여기서 n은 사전의 항목 수입니다.
보조 공간: O(n) - 정렬된 튜플 목록을 저장합니다. dict() 생성자는 정렬된 목록에서 새 사전을 생성하는 데 O(n) 시간이 걸립니다.