PHpullh

PYTHON · 컬렉션

ChainMap

ChainMap으로 여러 딕셔너리를 하나로 연결하여 계층적 설정을 관리합니다.

컬렉션중급ChainMap체인맵설정계층

핵심 설명

ChainMap으로 여러 딕셔너리를 하나로 연결하여 계층적 설정을 관리합니다.

Python code

from collections import ChainMap

# 계층적 설정
defaults = {"color": "red", "size": 10, "font": "Arial"}
user_prefs = {"color": "blue", "font": "Helvetica"}
cli_args = {"color": "green"}

config = ChainMap(cli_args, user_prefs, defaults)
print(config["color"])  # green (가장 앞쪽 우선)
print(config["size"])   # 10 (defaults에서 가져옴)
print(config["font"])   # Helvetica

# 모든 키 조회
print(list(config.keys()))

# 새 레이어 추가
session = config.new_child({"size": 20})
print(session["size"])    # 20
print(session["color"])   # green
print(session.parents["size"])  # 10

# maps로 모든 레이어 접근
for i, m in enumerate(config.maps):
    print(f"  레이어 {i}: {m}")

# 변경은 첫 번째 맵에만 적용
config["new_key"] = "value"
print(cli_args)  # {'color': 'green', 'new_key': 'value'}

학습 팁

ChainMap은 딕셔너리를 복사하지 않으므로 원본 딕셔너리가 변경되면 즉시 반영됩니다.

주의할 점

ChainMap에 값을 설정하면 항상 첫 번째 맵에만 추가됩니다. 특정 레이어를 수정하려면 .maps[n]에 직접 접근하세요.

자주 묻는 질문

ChainMap란 무엇인가요?

ChainMap 으로 여러 딕셔너리를 하나로 연결하여 계층적 설정을 관리합니다.

ChainMap 학습 시 주의할 점은 무엇인가요?

ChainMap 에 값을 설정하면 항상 첫 번째 맵에만 추가됩니다. 특정 레이어를 수정하려면 .maps[n] 에 직접 접근하세요.

Continue Learning

Python 학습을 이어가세요

총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.