ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Dictionary 정렬하기
    Web/Python 2017. 11. 26. 15:03

     

     

    딕셔너리는 리스트만큼이나 파이썬 내에서 활용이 많으며, 또 자바스크립트의 JSON 파일과 유사한 성격을 띄기 때문에 정렬의 쓰임이 많다.여기서는 딕셔너리를 정렬하는 방법에 대해 알아보도록 하자.


    딕셔너리 정렬하는 방법은 2가지가 존재한다.


    1. operator 라이브러리 활용하기

    2. 람다함수 활용하기


    각각에 대해 알아보자.


    1. Operator 라이브러리 활용하기


    operator를 활용해서 key 혹은 value로 정렬이 가능하다. 다음의 예시를 보자.


    Key를 기준으로 정렬하기

    >>> import operator
    >>> k = {1:"c", 2:"a", 3:"t", 4:"n", 5:"a", 6:"p"}
    >>> k_sorted=sorted(k.items(), key=operator.itemgetter(0))

    >>> print(k_sorted)
    [(1, 'c'), (2, 'a'), (3, 't'), (4, 'n'), (5, 'a'), (6, 'p')]

    >>>k_sorted=sorted(k.items(), key=operator.itemgetter(0), reverse=True) // reverse를 활용하면 역으로 정렬이 가능하다.

    >>>print(k_sorted)
    [(6, 'p'), (5, 'a'), (4, 'n'), (3, 't'), (2, 'a'), (1, 'c')]

    >>> print(k.items())
    dict_items([(1, 'c'), (2, 'a'), (3, 't'), (4, 'n'), (5, 'a'), (6, 'p')])


    위의 예시에 대해 설명하자면, items()를 통해 딕셔너리 k를 리스트 내 튜플로 변환해주고, operator.itemgetter( ) 내부에 0을 입력하여 각 튜플을 키값을 기준을 정렬한다. 그리고 1을 입력하면 아래와 같이 value를 기준으로 정렬이 된다.


    Value를 기준으로 정렬하기

    >>> import operator
    >>> k = {1:"c", 2:"a", 3:"t", 4:"n", 5:"a", 6:"p"}
    >>> k_sorted=sorted(k.items(), key=operator.itemgetter(1))

    >>> print(k_sorted)
    [(2, 'a'), (5, 'a'), (1, 'c'), (4, 'n'), (6, 'p'), (3, 't')]



    2. 람다함수 활용하기



    Value를 기준으로 정렬하기

    >>> k = {1:"c", 2:"a", 3:"t", 4:"n", 5:"a", 6:"p"}
    >>> k_sorted=sorted(k.items(), key=lambda x : x[1]) // key 부분에 람다함수를 입력하면 된다.

    >>> print(k_sorted)
    [(2, 'a'), (5, 'a'), (1, 'c'), (4, 'n'), (6, 'p'), (3, 't')]


    Key를 기준으로 정렬하고 싶다면 람다함수 부분에서 lambda x : x[0]로 교체해주면 된다.


    람다함수같은 경우, 이외에도 활용방안이 무궁무진하니 나중에 시간이 되면 제대로 공부를 해 놓은 게 좋겠다.

     

     

    'Web > Python' 카테고리의 다른 글

    문자열  (0) 2017.11.25
    고급 자료형(딕셔너리, 집합)  (0) 2017.11.24
    파이썬 기본  (0) 2017.11.19

    댓글

Designed by Tistory.