Python 에서 사전 모듈 ChainMap 의 숨겨 진 구 덩이 를 통합 합 니 다[추천]
update
방법 을 사용 할 수 있 습 니 다.예 를 들 어:
a = {'a': 1, 'b': 2}
b = {'x': 3, 'y': 4}
a.update(b)
print(a)
다음 그림 과 같이 실행 효과:그러나 이 방법 에는 한 가지 문제 가 있다.그것 은 그 중의 한 사전 을 바 꿀 것 이다.만약 우리 가 원래 있 던 두 사전 을 바 꾸 고 싶 지 않다 면,우 리 는 반드시 단독으로 사전 을 하나 더 만들어 야 한다.
a = {'a': 1, 'b': 2}
b = {'x': 3, 'y': 4}
c = dict(a)
c.update(b)
print(c)
print(a)
만약 원래 의 두 사전 이 매우 크다 면,이런 방식 은 대량의 메모 리 를 낭비 할 것 이다.
기 존의 사전 중 하 나 를 직접 수정 하 든 다른 사전 을 만 들 든 이 두 가지 방안 은 모두 결함 이 있다.그렇다면 기 존 사전 을 수정 하지 않 고 새로운 사전 을 만 들 지 않 는 방법 은 없 을 까?
정 답 은
collections
모듈 아래ChainMap
다.사용
ChainMap
은 여러 사전 을 하나의ChainMap
대상 으로 합 칠 수 있다.이 상 대 를 읽 고 쓰 는 것 은 마치 사전 을 읽 는 것 과 같다.예 를 들 면:
from collections import ChainMap
a = {'a': 1, 'b': 2}
b = {'x': 3, 'y': 4}
c = ChainMap(a, b)
print(c['a'])
print(c['y'])
다음 그림 과 같이 실행 효과:두 사전 을 합병 할 수 있 을 뿐만 아니 라
ChainMap
여러 사전 을 받 아들 이 고 그들 을 모두 합 칠 수 있다.
from collections import ChainMap
a = {'a': 1, 'b': 2}
b = {'x': 3, 'y': 4}
c = {'z': 5, 'w': 6}
d = {'m': 7, 'h': 8, 'k': 9}
e = ChainMap(a, b, c, d)
print(e['a'], e['y'], e['z'], e['k'])
다음 그림 과 같이 실행 효과:ChainMap
사전 을 합 친 것 이 아니 라 내부 에 하나의 Key 를 각 사전 의 맵 에 저장 합 니 다.읽 기e[key]
를 할 때 이 key 가 어느 사전 에 있 는 지 확인 한 다음 에 해당 하 는 사전 에서 해당 하 는 값 을 조회 합 니 다.그래서 ChainMap 을 사용 하려 면 추가 메모리 공간 이 거의 필요 하지 않 습 니 다.(현재 이 대상 은 스스로 공간 을 차지 하지만 큰 사전 을 합 치 려 면 자신 이 사용 하 는 공간 은 거의 무시 할 수 있 습 니 다)그래서 사전 을 완벽 하 게 통합 할 수 있 을 것 같 지 않 아 요?
그것 을 사용 하기 전에 너 는 반드시 그것 의 운행 원 리 를 이해 해 야 한다.만약 당신 이 그것 의 운행 원 리 를 이해한다 면,아래 의 몇 가지 문 제 는 코드 를 실행 하기 전에 결과 가 무엇 인지 알 게 될 것 입 니 다.
만약 두 사전 안에 키 의 이름 이 같다 면,ChainMap 을 사용 하면 어떤 것 을 읽 습 니까?ChainMap 대상 에 키-Value 쌍 을 추가 하면 이 값 은 어디 에 추 가 됩 니까?원래 사전에 서 Key 하 나 를 삭제 하면 ChainMap 대상 에 있 는 Key 도 사라 지나 요?ChainMap 대상 에서 Key 를 삭제 하면 원래 사전에 있 던 Key 가 사라 지나 요?
먼저 첫 번 째 문제 의 답 을 말씀 드 리 겠 습 니 다.
ChainMap
대상 은 이 Key 를 가 진 첫 번 째 사전 의 값 을 사용 합 니 다.다음 그림 과 같 습 니 다.두 번 째 문 제 는 다음 그림 과 같이 새로운 Key-Value 가 첫 번 째 사전 에 추 가 됩 니 다.
세 번 째 문 제 는 원래 의 사전 을 수정 하면
ChainMap
대상 도 상응 하 게 업 데 이 트 됩 니 다.네 번 째 질문 입 니 다.만약 에 이 Key 가 하나의 원본 사전 에 만 존재 한다 면 이 Key 는 원본 사전 에서 삭 제 됩 니 다.이 키 가 여러 사전 에 존재 한다 면 키 는 첫 번 째 사전에 서 삭 제 됩 니 다.첫 번 째 사전 에서 삭 제 된 후 두 번 째 원본 사전 의 키 는 계속 읽 을 수 있 습 니 다
ChainMap
.상기 4 시,당신 이 사용
ChainMap
할 때 반드시 기억 해 야 합 니 다.그렇지 않 으 면 발견 할 수 없 는 Bug 를 초래 할 수 있 습 니 다. 총결산
위 에서 말 한 것 은 소 편 이 소개 한 Python 에서 사전 모듈 ChainMap 의 숨겨 진 구 덩이 를 합 친 것 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 저 에 게 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.