Python 사전 시퀀스 구현 ChainMap
용기 데이터 형식 은 배열 list,사전 dict,원본 tuple 등 을 포함한다.이 편 은 ChainMap 사전 서열 의 사용 을 상세 하 게 소개 할 것 이다.
ChainMap
ChainMap 류 는 사전 서열 을 관리 하고 나타 나 는 순서에 따라 검색 하여 키 와 연 결 된 값 을 찾 습 니 다.ChainMap 은 좋 은'컨 텍스트'용 기 를 제공 하기 때문에 하나의 스 택 으로 볼 수 있 습 니 다.스 택 이 증가 할 때 변경 이 발생 하고 스 택 이 줄 어 들 때 이러한 변경 은 버 려 집 니 다.
다음은 기본 적 인 사용 규칙 을 살 펴 보 자.
import collections
a = {"a": "A", "c": "c", }
b = {"b": "B", "c": "D", }
col = collections.ChainMap(a, b)
#
print(col["a"])
print(list(col.keys()), list(col.values()))
for key, value in col.items():
print(key, value)
실행 후 효 과 는 다음 과 같 습 니 다.같은 key 값 의 경우 하위 맵 a 의 값 만 있 음 을 볼 수 있 습 니 다.이것 은 바로 ChainMap 이 서브 맵 이 구조 함수 에 전달 되 는 순서에 따라 이 서브 맵 을 검색 한 다 는 것 을 설명 한다.
다시 배열 하 다
사실 이 피 드 맵 의 순 서 는 maps 속성 에 있 습 니 다.우 리 는 이 를 통 해 새로운 맵 을 추가 하거나 맵 의 순 서 를 바 꿉 니 다.예 를 들 어 위 에서 c 를 비 추 는 것 은 a 사전 의 값 입 니 다.그러면 우 리 는 순 서 를 바 꾸 면 b 의 값 을 얻 을 수 있 습 니 다.
import collections
a = {"a": "A", "c": "c", }
b = {"b": "B", "c": "D", }
col = collections.ChainMap(a, b)
#
col.maps = list(reversed(col.maps))
for key, value in col.items():
print(key, value)
실행 후 효 과 는 다음 과 같 습 니 다.여기 함수 reversed()는 영 어 를 뒤 바 꾸 는 뜻 으로 이해 하기 쉽다.
업데이트 값
ChainMap 병합 서브 맵 의 값 을 어떻게 변경 해 야 합 니까?사실 기본 적 인 하위 맵 값 을 직접 업데이트 하 든 ChainMap 대상 의 값 을 업데이트 하 든 간 에.하위 맵 과 ChainMap 대상 의 값 을 동시에 변경 합 니 다.
import collections
a = {"a": "A", "c": "c", }
b = {"b": "B", "c": "D", }
col = collections.ChainMap(a, b)
col['c'] = 'Z'
print(col['c'])
#
col['c'] = 'c'
a['c'] = 'Z'
print(col['c'])
실행 후 효 과 는 다음 과 같 습 니 다.그렇다면 원 리 를 바 꾸 지 않 는 밑바닥 데이터 구 조 를 보장 한다 면?정 답 은 newchild()새 ChainMap 을 만 듭 니 다.구체 적 인 코드 는 다음 과 같다.
import collections
a = {"a": "A", "c": "c", }
b = {"b": "B", "c": "D", }
col = collections.ChainMap(a, b)
col2 = col.new_child()
print(col)
print(col2)
print("--------------------------")
col2['c'] = 'Z'
print(col)
print(col2)
실행 후 효 과 는 다음 과 같 습 니 다.보 입 니 다.newchild()는 맨 앞 에 추가 맵 을 제공 합 니 다.바로 이러한 스 택 을 바탕 으로 하 는 사고 로 우 리 는 한 번 의 교체 에서 값 을 증가 하거나 갱신 한 다음 에 다음 교체 에서 이러한 변 화 를 버 리 기 쉽다.
파 이 썬 의 사전 서열 체인 맵 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 사전 서열 체인 맵 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.