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()는 맨 앞 에 추가 맵 을 제공 합 니 다.바로 이러한 스 택 을 바탕 으로 하 는 사고 로 우 리 는 한 번 의 교체 에서 값 을 증가 하거나 갱신 한 다음 에 다음 교체 에서 이러한 변 화 를 버 리 기 쉽다.
파 이 썬 의 사전 서열 체인 맵 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 사전 서열 체인 맵 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기