Python 프로그래밍: 사전 체인 매핑(ChainMap)을 사용하는 또 다른 방법, 플레이해 보세요!
머리말
컬렉션은 dict, list, set, tuple과 같은 Python의 일반적인 내장 컨테이너를 대체할 수 있는 특수 컨테이너 데이터 유형(Container Datatype)입니다. 컨테이너는 다양한 개체를 저장하는 데 사용할 수 있는 특수 목적 개체입니다. 이는 포함된 객체에 액세스하고 이를 반복하는 방법을 제공합니다.
Python은 컨테이너 데이터 유형을 구현하는 컬렉션 모듈을 제공합니다. 이 장 시리즈에서는 다음을 포함하는 컬렉션 모듈의 다양한 컬렉션 유형에 대해 알아봅니다.
- UserString
- 각 컨테이너 유형인 ChainMap을 소개하겠습니다.
- ChainMap 알아보기
- Python에서 제공하는 ChainMap 클래스(체인 매핑 클래스라고 함)는 많은 매핑을 신속하게 연결하여 단일 단위로 처리할 수 있도록 하는 사전과 유사한 클래스입니다. 일반적으로 새 사전을 만들고 여러 update() 호출을 실행하는 것보다 훨씬 빠릅니다.
- 구문 형식은 다음과 같습니다.
- xchainMap = collections.ChainMap(*maps)
- 설명: 구문 형식의 collections는 가져온 완성 모듈의 이름입니다. 다음과 같이 모듈을 가져오는 경우: import collections as cts, 구문은 다음과 같이 변경될 수 있습니다: class cts.ChainMap(*maps) 또는 퍼지 가져오기: from collections import ChainMap, 이는 다음과 같이 수정될 수 있습니다: ChainMap(*maps).
- ChainMap은 여러 사전 또는 기타 매핑을 결합하여 업데이트 가능한 단일 보기(사전 목록)를 만듭니다. 매핑이 지정되지 않은 경우 새 체인 맵(ChainMap)이 항상 하나 이상의 매핑을 사용할 수 있도록 빈 사전이 제공됩니다.
아래의 간단한 예를 보세요. 코드 목록은 다음과 같습니다.
프로그램 실행의 출력 결과는 다음과 같습니다.
ChainMap({'one': 1, 'two': 2}, {'a': 'A', 'b': 'B'}) [{'one': 1, 'two': 2}, {'a': 'A', 'b': 'B'}]
위 목록에서는 두 개의 사전을 사용하여 ChainMap 개체( 체인_맵). 그런 다음 ChainMap 객체와 지도 속성을 인쇄합니다. 출력에서 볼 수 있듯이 결과는 이러한 사전의 구성 보기입니다.
ChainMap 키 값에 액세스
key() 및 value() 메서드를 사용하여 ChainMap 키와 값에 액세스할 수 있습니다. 코드 예시는 다음과 같습니다.
위 코드의 출력 결과는 다음과 같습니다.KeysView(ChainMap({'one': 1, 'two': 2}, {'a': 'A', 'b': 'B'})) ValuesView(ChainMap({'one': 1, 'two': 2}, {'a': 'A', 'b': 'B'}))
key = a,value=A key = b,value=B key = one,value=1 key = two,value=2 链映射包含的值为: A;B;1;2;
print(chain_map['b'] )
로그인 후 복사
즉, 키 이름: chain_map[' one ']을 사용하여 ChainMap의 기본 사전에 있는 단일 항목의 값에 액세스합니다. ChainMap에 새 매핑 추가print(chain_map['b'] )
ChainMap에는 원하는 수의 사전이 포함될 수 있습니다. 내장된 new_child() 메소드를 사용하여 ChainMap에 새 사전을 추가합니다. new_child() 메서드는 새 매핑과 그 뒤에 현재 인스턴스의 모든 매핑이 포함된 새 ChainMap을 반환합니다. 여기서 주목해야 할 점은 새로 추가된 사전이 ChainMap의 시작 부분에 배치된다는 것입니다. 예를 살펴보겠습니다.
Old: ChainMap({'one': 1, 'two': 2}, {'a': 'A', 'b': 'B'}) New: ChainMap({'x': 0, 'y': 1}, {'one': 1, 'two': 2}, {'a': 'A', 'b': 'B'})
这里需要注意的是,用链式映射的new_child()方法添加新字典后,不改变原来的链映射,会返回一个新的ChainMap对象。另外,如果你修改链式映射所包含的映射或字典,变化也将体现在链式映射对象中。
另外,实践中要当心:如果你按照字典操作来添加新的键值对,则该键值对会添加到链式映射所包含的第一个映射中,如:new_chain_map['X'] = 'Unkown' 。自己动手试试看。
所含映射有相同键怎么办?
底层上,链式映射主要是为把多个字典或映射打包成一个映射,以便集中操作。如果所办函的字典中有相同的键会怎样呢?来看示例:
运行程序输出结果如下:
ChainMap({'id': 21001, 'country': '大秦', 'emperor': '嬴政'}, {'name': '李靖', 'country': '大唐', 'title': '元帅'}) 大秦 ('name', '李靖') ('country', '大秦') ('title', '元帅') ('id', 21001) ('emperor', '嬴政')
很显然,链接的映射中出现相同字典项时,只读取第一个,以第一个为准,而且当你更新一个键的值时,它也只是更新第一个映射内容的键值。
如果你想一次更新所有映射中的相同键的值怎么办呢?你可以自定义一个ChainMap子类来实现,或定义更新方法。因为ChainMap中有个属性maps持有完整的各个映射,可以基于此属性来完成相同键的一次性更新。这里简单给个通过方法的方式实现多映射相同键的一次更新。示例代码如下:
当然,你可以写得更复杂一点,以完成更多的需要,也可实现一次多个映射中的相同键的值。自己动手试试吧。
本文小结
本文主要介绍了Python集合模块中的链式映射容器——ChainMap的使用,可以把多个字典打包成一个对象来操作。同时需要注意的是,该映射只是对原字典的引用,当你修改原字典时,相应的变化也为体现在链式映射中。同时,在为ChainMap新增新的键值对时,它会添加到所包含的第一个映射对象中。
위 내용은 Python 프로그래밍: 사전 체인 매핑(ChainMap)을 사용하는 또 다른 방법, 플레이해 보세요!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











C 언어에는 내장 합계 기능이 없으므로 직접 작성해야합니다. 합계는 배열 및 축적 요소를 가로 질러 달성 할 수 있습니다. 루프 버전 : 루프 및 배열 길이를 사용하여 계산됩니다. 포인터 버전 : 포인터를 사용하여 배열 요소를 가리키며 효율적인 합계는 자체 증가 포인터를 통해 달성됩니다. 동적으로 배열 버전을 할당 : 배열을 동적으로 할당하고 메모리를 직접 관리하여 메모리 누출을 방지하기 위해 할당 된 메모리가 해제되도록합니다.

기술 및 산업 요구에 따라 Python 및 JavaScript 개발자에 대한 절대 급여는 없습니다. 1. 파이썬은 데이터 과학 및 기계 학습에서 더 많은 비용을 지불 할 수 있습니다. 2. JavaScript는 프론트 엔드 및 풀 스택 개발에 큰 수요가 있으며 급여도 상당합니다. 3. 영향 요인에는 경험, 지리적 위치, 회사 규모 및 특정 기술이 포함됩니다.

구별되고 구별되는 것은 구별과 관련이 있지만, 다르게 사용됩니다. 뚜렷한 (형용사)는 사물 자체의 독창성을 묘사하고 사물 사이의 차이를 강조하는 데 사용됩니다. 뚜렷한 (동사)는 구별 행동이나 능력을 나타내며 차별 과정을 설명하는 데 사용됩니다. 프로그래밍에서 구별은 종종 중복 제거 작업과 같은 컬렉션에서 요소의 독창성을 나타내는 데 사용됩니다. 홀수 및 짝수 숫자를 구별하는 것과 같은 알고리즘이나 함수의 설계에 별개가 반영됩니다. 최적화 할 때 별도의 작업은 적절한 알고리즘 및 데이터 구조를 선택해야하며, 고유 한 작업은 논리 효율성의 구별을 최적화하고 명확하고 읽을 수있는 코드 작성에주의를 기울여야합니다.

코드 취약점, 브라우저 호환성, 성능 최적화, 보안 업데이트 및 사용자 경험 개선과 같은 요소로 인해 H5 페이지를 지속적으로 유지해야합니다. 효과적인 유지 관리 방법에는 완전한 테스트 시스템 설정, 버전 제어 도구 사용, 페이지 성능을 정기적으로 모니터링하고 사용자 피드백 수집 및 유지 관리 계획을 수립하는 것이 포함됩니다.

! x 이해! x는 C 언어로 된 논리적 비 운영자입니다. 그것은 x의 값, 즉 실제 변경, 거짓, 잘못된 변경 사항을 부수합니다. 그러나 C의 진실과 거짓은 부울 유형보다는 숫자 값으로 표시되며, 0이 아닌 것은 참으로 간주되며 0만이 거짓으로 간주됩니다. 따라서! x는 음수를 양수와 동일하게 처리하며 사실로 간주됩니다.

합에 대한 C에는 내장 합계 기능이 없지만 다음과 같이 구현할 수 있습니다. 루프를 사용하여 요소를 하나씩 축적합니다. 포인터를 사용하여 요소를 하나씩 액세스하고 축적합니다. 큰 데이터 볼륨의 경우 병렬 계산을 고려하십시오.

크롤링하는 동안 58.com 작업 페이지의 동적 데이터를 얻는 방법은 무엇입니까? Crawler 도구를 사용하여 58.com의 작업 페이지를 크롤링 할 때는이 문제가 발생할 수 있습니다.

코드 복사 및 붙여 넣기는 불가능하지는 않지만주의해서 처리해야합니다. 코드의 환경, 라이브러리, 버전 등과 같은 종속성은 현재 프로젝트와 일치하지 않으므로 오류 또는 예측할 수없는 결과를 초래할 수 있습니다. 파일 경로, 종속 라이브러리 및 Python 버전을 포함하여 컨텍스트가 일관되게 유지하십시오. 또한 특정 라이브러리의 코드를 복사 및 붙여 넣을 때 라이브러리 및 해당 종속성을 설치해야 할 수도 있습니다. 일반적인 오류에는 경로 오류, 버전 충돌 및 일관되지 않은 코드 스타일이 포함됩니다. 성능 최적화는 코드의 원래 목적 및 제약에 따라 재 설계 또는 리팩토링되어야합니다. 복사 코드를 이해하고 디버그하고 맹목적으로 복사하여 붙여 넣지 않는 것이 중요합니다.
