기계는 거짓말하지 않는다

Python Dict 삽입 순서 (OrderedDict) 본문

Python

Python Dict 삽입 순서 (OrderedDict)

KillinTime 2022. 12. 10. 23:13

Python 3.7 버전부터 기본 Dict도 삽입 순서를 보장한다.

명시적으로는 collections 모듈의 OrderedDict를 사용할 수 있다.

 

Python Ordered Dict 문서

 

collections — Container datatypes

Source code: Lib/collections/__init__.py This module implements specialized container datatypes providing alternatives to Python’s general purpose built-in containers, dict, list, set, and tuple.,,...

docs.python.org

 

아래와 같이 사용할 수 있다.

from collections import OrderedDict

class LastUpdatedOrderedDict(OrderedDict):
    def __setitem__(self, key, value):
        print("Set Item Last")
        super().__setitem__(key, value)
        self.move_to_end(key)
        
class FirstUpdatedOrderedDict(OrderedDict):
    def __setitem__(self, key, value):
        print("Set Item First")
        super().__setitem__(key, value)
        self.move_to_end(key, last=False)
        
last_ordered_dict = LastUpdatedOrderedDict()
last_ordered_dict['a'] = 10
last_ordered_dict['b'] = 20
last_ordered_dict['c'] = 30

first_ordered_dict = FirstUpdatedOrderedDict()
first_ordered_dict['a'] = 10
first_ordered_dict['b'] = 20
first_ordered_dict['c'] = 30

print(last_ordered_dict, first_ordered_dict)
print(first_ordered_dict['a'], last_ordered_dict['c'])

# LIFO
print(last_ordered_dict.popitem())
# FIFO
print(first_ordered_dict.popitem(last=False))

Comments