-
[Python] ChainMapPython/Python 2024. 6. 25. 17:15반응형
ChainMap은 여러 개의 딕셔너리를 하나의 논리적인 뷰로 결합할 때 사용되는 유용한 도구다
기능적인 관점에서 두 딕셔너리를 병합하는 객체를 만드는 방법은 ChaiMap클래스를 방법이있다.
새로운 딕셔너리를 만들고 여러 Update를 호출하는 것 보다 ChainMap 함수를 사용할 때가 더 빠르다.
작동 예시
from collections import ChainMap user_account = {"iban": "GB71BARC200231", "type": "account"} user_profile = {"display_name": "John Doe", "type": "profile"} user = ChainMap(user_account, user_profile) >>> user['iban'] 'GB71BARC200231' >>> user['display_name'] 'John Doe'
ChainMap을 쓸꺼면 그냥 병합연산자 사용하는게 낫지않나 싶은데? 순전파와 역전파 작동을 의도한다면 ChainMap 그 목적에 적합한다.
파이썬 3.9버전 미만은 딕셔너리 병합연산자가 존재하지 않으므로 ChaimMap 함수를 사용해야 한다. 그렇지 않다면 솔직히 병합 연산자를 선언하긴 해도 됨.
[UseCase]
- 애플리케이션 설정을 처리할 때, 사용자 설정, 기본 설정, 환경 변수 등을 결합하여 하나의 설정 뷰를 만들 수 있습니다.
- 인터프리터나 컴파일러에서 지역, 비지역, 전역 변수를 처리할 때 유용합니다. 각 스코프의 변수를 딕셔너리로 관리하고, 이를 ChainMap으로 결합하여 변수 접근을 관리할 수 있습니다.
- 복잡한 데이터 구조에서 일시적인 변경을 적용하고 이를 나중에 되돌릴 수 있도록 합니다. 여러 딕셔너리를 연결하여 원본 데이터를 건드리지 않고도 임시 변경 사항을 처리할 수 있습니다.
- 템플릿 엔진에서 여러 레벨의 변수 컨텍스트를 결합하여 템플릿 렌더링 시 하나의 뷰로 처리할 수 있습니다.
[참고]
반응형'Python > Python' 카테고리의 다른 글
[Python]: 다중상속과 메서드 결정 순서 MRO(Method Resolution Order) (0) 2024.06.27 [Python] 파이썬 개발모드 dev (0) 2024.06.25 <class 'openpyxl.styles.named_styles._NamedCellStyle'>.name should be <class 'str'> but value is <class 'NoneType' (0) 2023.05.09 pip install h5py (0) 2022.03.03 Python Flask Example 플라스크 예제 !! 정복하기(1) (1) 2021.01.15