파이썬 딕셔너리 뷰 객체란?
파이썬에서 딕셔너리(dictionary)의 items(), keys(), values() 메서드는 모두 뷰(view) 객체를 반환합니다. 뷰 객체는 원본 딕셔너리의 데이터를 실시간으로 바라보는 일종의 '창'과 같아서, 원본 딕셔너리가 변경되면 그 변화가 뷰 객체에도 즉시 반영된다는 것이 가장 큰 특징입니다.
세 가지 뷰 객체 살펴보기
1. items() — 키-값 쌍 반환
items() 메서드는 딕셔너리에 저장된 모든 키-값(key-value) 쌍을 담고 있는 dict_items 객체를 반환합니다.
>>> D1 = {"pen": 25, "pencil": 10, "book": 100, "sharpner": 5, "eraser": 5}
>>> i = D1.items()
>>> i
dict_items([('pen', 25), ('pencil', 10), ('book', 100), ('sharpner', 5), ('eraser', 5)])
2. keys() — 키 목록 반환
keys() 메서드는 딕셔너리의 모든 키를 담고 있는 dict_keys 타입의 뷰 객체를 반환합니다.
>>> k = D1.keys() >>> k dict_keys(['pen', 'pencil', 'book', 'sharpner', 'eraser'])
3. values() — 값 목록 반환
마찬가지로 values() 메서드는 모든 값을 담고 있는 dict_values 객체를 반환합니다.
>>> v = D1.values() >>> v dict_values([25, 10, 100, 5, 5])
뷰 객체는 동적으로 갱신됩니다
뷰 객체의 핵심 특징은 동적(dynamic) 업데이트입니다. 원본 딕셔너리 객체에 변화가 생기면 해당 뷰 객체에도 그 내용이 그대로 반영됩니다. 예를 들어 딕셔너리에서 'book' 키를 삭제하면, 이미 생성해 둔 뷰 객체들에서도 관련 항목이 사라진 것을 확인할 수 있습니다.
>>> del D1['book']
>>> k
dict_keys(['pen', 'pencil', 'sharpner', 'eraser'])
>>> i
dict_items([('pen', 25), ('pencil', 10), ('sharpner', 5), ('eraser', 5)])
>>> v
dict_values([25, 10, 5, 5])
뷰 객체 활용 팁
뷰 객체는 리스트처럼 순회(iteration)할 수 있으며, in 연산자를 사용한 멤버십 검사도 빠르게 수행할 수 있습니다. 또한 필요하다면 list() 함수를 이용해 언제든 일반 리스트로 변환하여 사용할 수 있습니다.
>>> 'book' in k # book 삭제 후에는 False False >>> list(v) [25, 10, 5, 5]
이러한 동적 특성 덕분에 뷰 객체는 데이터의 복제 없이도 항상 최신 상태의 딕셔너리 정보를 참조할 수 있는 효율적인 도구입니다.