사전 dict는 Python의 중요한 데이터 구조입니다. 사전에서 각 키는 값에 해당합니다. 각 키가 값에 매핑된다고 할 수도 있습니다.
맵은 보다 일반적인 데이터 유형이며, 특히 Python에서는 사전입니다. (추천 학습: Python 동영상 튜토리얼)
사전을 사용할 때, 사전을 키를 통해 값에 어떻게 매핑하는지, 이 키의 값이 누구인지 어떻게 알 수 있는지에 대한 질문이 있어야 합니다.
그래서 우리는 다음 아이디어를 생각해 냈습니다.
키-값 객체를 하나씩 저장하려면 목록을 사용하세요. 검색할 때 해당 키가 찾고 있는 키라는 것을 알게 되면, 값 값을 입력합니다.
이 아이디어는 매우 간단하므로 신속하게 구현할 수 있습니다.
여기에서는 먼저 사용자 정의 맵 클래스를 구현하기 위해 컬렉션 모듈에 있는 몇 가지 관련 추상 기본 클래스인 Mapping 및 MutableMapping을 소개합니다. 매핑에는 dict의 모든 불변 메서드가 포함되어 있으며 MutableMapping 확장에는 모든 변수 메서드가 포함되어 있지만 둘 다 getitem, setitem, delitem, len 및 iter의 5가지 핵심 특수 메서드는 포함되어 있지 않습니다. 즉, 우리의 목표는 이 5가지 핵심 메소드를 데이터 구조가 사용될 수 있도록 구현하는 것입니다.
from collections import MutableMapping class MyMap(MutableMapping): class item(): def __init__(self,key,value): self.key = key self.value = value def __eq__(self, other): return self.key == other.key def __ne__(self, other): return self.key != other.key def __init__(self): self.table = [] def __getitem__(self, item): for i in self.table: if i.key == item: return i.value raise KeyError('Key Error: '+ repr(item)) def __setitem__(self, key, value): for i in self.table: if i.key == key: i.value = value return self.table.append(self.item(key,value)) def __delitem__(self, key): for n,i in enumerate(self.table): if i.key == key: self.pop(n) return raise KeyError('Key Error: '+ repr(key)) def __len__(self): return len(self.table) def __iter__(self): for i in self.table: yield i.key
위 방법은 매우 간단하지만, 키의 인덱스를 찾기 위해 매번 목록을 순회해야 하므로 시간 복잡도는 O(n)입니다.
더 많은 Python 관련 기술 기사를 보려면 Python Tutorial 칼럼을 방문하여 알아보세요!
위 내용은 파이썬은 매핑을 어떻게 구현합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!