매핑 유형은 데이터 항목과 해당 키 및 값에 액세스하는 방법을 제공하는 반복 가능한 키-값 데이터 항목의 조합입니다. python3에서는 순서가 지정되지 않은 두 가지 매핑 유형인 내장 dict와 표준 라이브러리 collections.defaultdict가 지원됩니다. 를 입력하세요.
python3.1 이후에는 순서가 지정된 매핑 유형도 도입되었습니다: collections.OrderedDict.
관련 권장 사항: "python video"
특징:
1. 따라서 모든 내장 고정 데이터 유형은 매핑 유형에서 키로 사용될 수 있습니다(모든 내장 고정 유형은 해시될 수 있음). 현재 노출되는 고정 데이터 유형은 int, float, complex입니다. , bool, str, tuple,frozenset;
2. 각 키와 관련된 값은 모든 객체가 될 수 있습니다.
3 매핑 유형도 반복 가능합니다.
4. 비교 연산자, 소속 연산자 in/not in 및 내장 len() 함수를 사용하여 매핑 유형을 비교할 수 있습니다.
1.dict(사전)
dict 데이터 유형은 순서가 지정되지 않은 변경 가능한 결합 데이터 유형으로, 0-n 키-값 쌍을 포함하며 키는 해시될 수 있는 객체를 가리킵니다. , 값은 모든 개체에 대한 참조를 가리킬 수 있습니다. 키는 해시 가능한 객체 참조이므로 dict가 변경 가능하고 dict가 순서가 없고 인덱스가 없으므로 dict에서 데이터 항목을 추가하고 제거할 수 있으므로 키의 고유성이 보장됩니다. 샤딩 연산자를 사용합니다.
사전 생성
1.dict()를 함수로 호출할 수 있습니다. 이때 빈 dict가 생성됩니다.
>>> dict() {} >>>
dict()에 매핑 유형 매개변수가 전달되면
>>> d1 = {"key1":"value1","key2":"value2"} >>> dict(d1) {'key1': 'value1', 'key2': 'value2'} >>>
dict()와 같은 사전은 시퀀스 유형 매개변수를 허용할 수도 있지만 전제는 시퀀스 자체의 각 데이터 항목이 두 개의 객체를 포함하는 시퀀스이고 첫 번째 객체가 키로 사용된다는 것입니다. , 두 번째는 다음과 같은 값입니다.
>>> d1 = dict((("k1","v1"),("k2","v2"))) #使用元组创建 >>> d1 {'k1': 'v1', 'k2': 'v2'} >>> >>> d1 = dict([("k1","v1"),("k2","v2")]) #使用序列创建 >>> d1 {'k1': 'v1', 'k2': 'v2'} >>>
dict()는 키워드 매개변수를 사용하여 생성할 수도 있습니다. 여기서 키는 키워드로 사용되고 값은 다음과 같이 키워드 값으로 사용됩니다.
>>> dict(id=1,name="zhangsan",age=23) {'id': 1, 'name': 'zhangsan', 'age': 23} >>>
참고: 키워드는 유효한 Python 식별자여야 합니다
2. 중괄호를 사용하여 사전을 만듭니다. 비어 있지 않은 사전은 여러 항목으로 구성되며 각 항목은 쉼표로 구분됩니다. , 각 항목은
>>> dict2 = {"name":"kobe","age":33,"num":24} >>> dict2 {'name': 'kobe', 'age': 33, 'num': 24} >>>
3과 같은 K:V 형식으로 생성됩니다. 사전 의미를 사용하여 사전 만들기
defaultdict는 dict의 모든 작업과 메서드를 지원하는 dict의 하위 클래스입니다. dict와의 차이점은 dict에 특정 키가 포함되어 있지 않으면 dict[x]를 통해 값을 가져올 때 KeyError 예외가 발생하지만, defaultdict인 경우 해당 키와 default 값으로 새 항목이 생성됩니다. 값.
2. collections.defaultdict(기본 사전)
collections.defaultdict
만들기 collections.defaultdict()를 통해 매개변수에 따라 만드는 방법은 두 가지가 있습니다.
* 1. 매개변수 유형을 사용하여 생성:
>>> import collections >>> cd1 = collections.defaultdict(int) >>> cd2 = collections.defaultdict(list) >>> cd3 = collections.defaultdict(str) >>> cd1["x"] 0 >>> cd2["x"] [] >>> cd3["x"] '' >>>
Int, list, str이 여기에서 각각 사용되며 기본값은 0, [], "
* 2. 함수 이름을 사용하여 생성:
>>> def name(): return 'zhangsan' >>> cd4 = collections.defaultdict(name) >>> cd4["x"] 'zhangsan' >>>
이 방법을 통해 기본 사전의 기본값을 보다 유연하게 만들 수 있습니다.
collections.defaultdict()는 매개변수 없이 또는 None을 전달할 수 있지만, 그렇다면 기본값은 그렇지 않습니다.
>>> cd5 = collections.defaultdict() >>> cd5["x"] Traceback (most recent call last): File "<pyshell#254>", line 1, in <module> cd5["x"] KeyError: 'x' >>>
collections.defaultdict를 사용하면 dict의 get(k,v) 및 setdefault() 메서드를 바꿀 수 있습니다.
3 collections.OrderedDict
OrderedDict는 dict 하위 클래스입니다. 모든 dict 메소드를 지원합니다. 새 항목이 기존 항목을 덮어쓰는 경우 항목을 삭제하고 다시 삽입하면 항목이 끝으로 이동하므로 순서가 다음과 같습니다. , 두 OrderedDict는 동일합니다. 그러나 OrderedDict를 일반 dict와 비교할 때 순서는 무시됩니다.
class collections.OrderedDict([items])
from collections import OrderedDict d = {'banana': 3, 'apple': 4} od1 = OrderedDict({'banana': 3, 'apple': 4}) od2 = OrderedDict({'apple': 4, 'banana': 3}) print(od1 == od2) print(od1 == d)
3. 일반 dict의 이 방법은 그렇지 않습니다. 매개변수를 허용하고 삭제만 가능합니다. OrderedDict는 dict보다 더 유연하며 마지막 매개변수를 허용합니다. last=True인 경우 일반 방법과 동일하며 last=False인 경우 첫 번째 항목을 따릅니다. FIFO 순서에 따라 요소가 삭제됩니다
FalseTrue
. 실행 결과
OrderedDict.popitem(last=True)
4. 간단한 개선
OrderedDict는 항목이 수정되면 순서가 수정되지 않습니다.
from collections import OrderedDict od1 = OrderedDict({'banana': 3, 'apple': 4}) od1.popitem(False) print(od1)
위 내용은 Python 매핑 유형 관련 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!