> 백엔드 개발 > 파이썬 튜토리얼 > Python 매핑 유형 관련 소개

Python 매핑 유형 관련 소개

爱喝马黛茶的安东尼
풀어 주다: 2019-06-14 14:01:06
원래의
3966명이 탐색했습니다.

매핑 유형은 데이터 항목과 해당 키 및 값에 액세스하는 방법을 제공하는 반복 가능한 키-값 데이터 항목의 조합입니다. python3에서는 순서가 지정되지 않은 두 가지 매핑 유형인 내장 dict와 표준 라이브러리 collections.defaultdict가 지원됩니다. 를 입력하세요.

python3.1 이후에는 순서가 지정된 매핑 유형도 도입되었습니다: collections.OrderedDict.

관련 권장 사항: "python video"

Python 매핑 유형 관련 소개

특징:

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: &#39;x&#39;
>>>
로그인 후 복사

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 = {&#39;banana&#39;: 3, &#39;apple&#39;: 4}
od1 = OrderedDict({&#39;banana&#39;: 3, &#39;apple&#39;: 4})
od2 = OrderedDict({&#39;apple&#39;: 4, &#39;banana&#39;: 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({&#39;banana&#39;: 3, &#39;apple&#39;: 4})
od1.popitem(False)
print(od1)
로그인 후 복사
그러나 때로는 수정하고 삽입할 때 동일한 효과가 필요할 수 있습니다. __setitem__() 메서드를 다시 작성하여 먼저 요소를 삭제한 다음 수정할 때 삽입하면 됩니다. .

위 내용은 Python 매핑 유형 관련 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿