파이썬 컬렉션 모듈: OrderedDict

왜 OrderedDict가 필요한가요?



Python의 사전은 Python 3.7+ 이후에 삽입 순서를 완전히 유지하므로 OrderedDict의 사용 사례가 서서히 사라지고 있습니다. 그러나 여전히 OrderedDicts를 사용하는 동안 활용할 수 있는 몇 가지 도우미 메서드와 기능이 있습니다.



OrderedDict 만들기



이후 dict 하위 클래스입니다. 사전의 모든 기능을 활용할 수 있습니다.
OrderedDict에만 관련된 몇 가지 중요한 방법에 대해 설명하겠습니다.

포피템 방법



정렬된 사전에 대한 popitem(last = True) 메서드는 (키, 값) 쌍을 반환하고 제거합니다.

쌍은 에서 반환됩니다.

  • LastInFirstOut(LIFO) last가 참인 경우 순서입니다. 즉, 마지막 쌍이 팝됩니다.(기본값)

  • False인 경우 FirstInFirstOut(FIFO) 순서입니다. 즉, 첫 번째 쌍이 팝됩니다.

  • from collections import OrderedDict
    
    ord_dict = OrderedDict({"fname": "The",
                            "lname": "CodeBlooded",
                            "founder": "A Geek",
                            "Ran by": "Geeks"})
    
    last_pair = ord_dict.popitem()  # last=True by default
    first_pair = ord_dict.popitem(last=False)
    
    print(f'last pair: {last_pair}')
    print(f'first pair: {first_pair}')
    
    """OUTPUT 
    last pair: ('Ran by', 'Geeks')
    first pair: ('fname', 'The')
    """
    

    move_to_end 방법


    move_to_end(key, last=True)는 기존 키를 정렬된 사전의 한쪽 끝으로 이동합니다.

    항목은 last가 true(기본값)이면 오른쪽 끝으로 이동하고 last가 false이면 처음으로 이동합니다.

    from collections import OrderedDict
    
    ord_dict = OrderedDict({"fname": "The",
                            "lname": "CodeBlooded",
                            "founder": "A Geek",
                            "Ran by": "Geeks"})
    
    print(f'Before =>\n{ord_dict}')
    # move to right-most end
    ord_dict.move_to_end('founder')
    
    # move to left-most end
    ord_dict.move_to_end('Ran by', last=False)
    
    print(f'After =>\n{ord_dict}')
    
    """OUTPUT 
    Before =>
    OrderedDict([('fname', 'The'), ('lname', 'CodeBlooded'), 
                ('founder', 'A Geek'), ('Ran by', 'Geeks')])
    After =>
    OrderedDict([('Ran by', 'Geeks'), ('fname', 'The'), 
                ('lname', 'CodeBlooded'), ('founder', 'A Geek')])
    
    """
    


    💡 주어진 키가 사전에 없으면 KeyError가 발생합니다.

    이것으로 OrderedDict에 대한 논의를 마쳤습니다! 지금까지 논의한 모든 Collections 클래스가 dict 하위 클래스라는 것을 알 수 있다면 흥미롭지 않습니까? 파이썬의 사전이 얼마나 강력한지에 대한 증거입니다 😎

    좋은 웹페이지 즐겨찾기