>  기사  >  백엔드 개발  >  당신이 알아야 할 Python 사전의 사용법

당신이 알아야 할 Python 사전의 사용법

angryTom
angryTom앞으로
2019-11-28 17:12:152883검색

이 글의 Python 버전은 3.7.X입니다. 이 글을 읽기 전에 Python 사전의 기본 사용법을 이해해야 합니다.

당신이 알아야 할 Python 사전의 사용법

Introduction

사전(dict)은 다음에 내장된 데이터 구조입니다. Python. 여러 개의 키-값 쌍으로 구성됩니다. 키(key)와 값(value)은 콜론으로 구분됩니다. 각 키-값 쌍은 중괄호({)로 구분됩니다. }) 키는 고유해야 하며 값은 모든 유형이 될 수 있지만 키는 문자열, 숫자 또는 튜플과 같은 변경할 수 없는 유형이어야 합니다.

권장: "python tutorial"

하단 레이어는 해시 테이블을 사용하여 키와 값을 연결하며 dict는 순서가 없습니다. 기능은 다음과 같습니다:

● 검색 및 삽입 속도가 매우 빠르며 키 수가 증가해도 느려지지 않습니다.

● 더 많은 메모리가 필요합니다

# 🎜🎜#그래서 dict는 공간과 시간을 교환하는 데이터 구조로, 빠른 검색이 필요한 시나리오에 사용됩니다.

작업: 일반 메서드

get()

특정 키의 값을 반환합니다. 존재하지 않는 경우 오류 보고 없이 기본값(기본값은 None)을 반환합니다. 구문은 dict.get(key)입니다.

dict_1['age'] = 24
In [7]: print(dict_1.get('age'))
24
In [11]: print(dict_1.get('nama'))
None
In [12]: print(dict_1['nama'])
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-12-ef61a380920e> in <module>
----> 1 print(dict_1[&#39;nama&#39;])
KeyError: &#39;nama&#39;

key in dict

in 연산자를 사용하여 키가 사전에 존재하는지 확인합니다. 키가 있으면 True를 반환합니다. 그렇지 않으면 False를 반환합니다. 구문은 다음과 같습니다. key in dict.

In [15]: dict_1
Out[15]: {&#39;name&#39;: None, &#39;age&#39;: 24, &#39;sex&#39;: None}
In [16]: print(&#39;name&#39; in dict_1)
True
In [17]: print(&#39;nama&#39; in dict_1)
False

Python 2에서 이 함수는 has_key() 메서드를 사용하여 구현됩니다.

items()

목록 형식의 탐색 가능한(키, 값) 튜플 배열을 반환하며 구문은 dict.items() 입니다.

In [18]: dict_1
Out[18]: {&#39;name&#39;: None, &#39;age&#39;: 24, &#39;sex&#39;: None}
In [19]: print(dict_1.items())
dict_items([(&#39;name&#39;, None), (&#39;age&#39;, 24), (&#39;sex&#39;, None)])
In [20]: for key, value in dict_1.items():
    ...:     print(key, value)
    ...:
name None
age 24
sex None

keys()

사전의 모든 키를 목록으로 반환: dict.keys()

In [21]: dict_1
Out[21]: {&#39;name&#39;: None, &#39;age&#39;: 24, &#39;sex&#39;: None}
In [22]: print(dict_1.keys())
dict_keys([&#39;name&#39;, &#39;age&#39;, &#39;sex&#39;])
#🎜 🎜 #

values()

사전의 모든 값을 목록으로 반환: dict.values()

In [27]: dict_1
Out[27]: {&#39;name&#39;: None, &#39;age&#39;: 24, &#39;sex&#39;: None, &#39;sub_name&#39;: &#39;Tony&#39;}
In [28]: print(dict_1.values())
dict_values([None, 24, None, &#39;Tony&#39;])
setdefault()
和get()类似,用户获得与给顶尖相关联的值,不同的是,该方法如果键不存在时会添加键并将值设为默认值,语法为:dict.setdefault(key, default=None)。
In [23]: dict_1
Out[23]: {&#39;name&#39;: None, &#39;age&#39;: 24, &#39;sex&#39;: None}
In [24]: print(dict_1.setdefault(&#39;name&#39;))
None
In [25]: print(dict_1.setdefault(&#39;name&#39;, &#39;Tony&#39;))
None
In [26]: print(dict_1.setdefault(&#39;sub_name&#39;, &#39;Tony&#39;))
Tony
In [27]: dict_1
Out[27]: {&#39;name&#39;: None, &#39;age&#39;: 24, &#39;sex&#39;: None, &#39;sub_name&#39;: &#39;Tony&#39;}

#🎜🎜 #update( )

구문은 dict_1.update(dict_2)이며, 이는 dict_2의 키-값 쌍을 dict_1로 업데이트하는 데 사용됩니다. 덮어쓰게 됩니다.

In [31]: dict_1
Out[31]: {&#39;name&#39;: None, &#39;age&#39;: 24, &#39;sex&#39;: None, &#39;sub_name&#39;: &#39;Tony&#39;}
In [32]: dict_2
Out[32]: {&#39;name&#39;: &#39;Mary&#39;, &#39;age&#39;: 18, &#39;sex&#39;: None, &#39;sub_name&#39;: &#39;&#39;}
In [33]: dict_1.update(dict_2)
In [34]: dict_1
Out[34]: {&#39;name&#39;: &#39;Mary&#39;, &#39;age&#39;: 18, &#39;sex&#39;: None, &#39;sub_name&#39;: &#39;&#39;}

clear()

사전의 모든 항목을 삭제합니다(dict.clear()). 예:

In [1]: dict_1 = dict(name="Tony", age=24)
In [2]: dict_2 = dict_1
In [3]: print(dict_2)
{&#39;name&#39;: &#39;Tony&#39;, &#39;age&#39;: 24}
In [4]: dict_2.clear()
In [5]: dict_2
Out[5]: {}
In [6]: dict_1
Out[6]: {}
# 🎜🎜#

copy()

원래 사전의 얕은 복사본, 동일한 키-값 쌍인 dict.copy()를 사용하여 새 사전을 반환합니다. 예: # 🎜🎜#

In [1]: dict_1 = dict(name=&#39;Tony&#39;, info=[&#39;boy&#39;, 24])
In [2]: dict_3 = dict_1.copy()
In [3]: dict_3[&#39;name&#39;] = "Ring"
In [4]: dict_3[&#39;info&#39;].remove(&#39;boy&#39;)
In [5]: dict_3
Out[5]: {&#39;name&#39;: &#39;Ring&#39;, &#39;info&#39;: [24]}
In [6]: dict_1
Out[6]: {&#39;name&#39;: &#39;Tony&#39;, &#39;info&#39;: [24]}
fromkeys()

다음의 요소를 기반으로 새 사전 dict.fromkeys(seq[, value])를 만듭니다. 시퀀스 seq 사전의 키, value는 사전의 모든 키에 해당하는 초기 값입니다. 여기서 value는 선택적 매개변수이고 기본값은 None입니다. 데이터 초기화에 적합합니다. 예:

In [1]: info = [&#39;name&#39;, &#39;age&#39;, &#39;sex&#39;]
In [2]: dict_1 = dict.fromkeys(info)
In [3]: dict_1
Out[3]: {&#39;name&#39;: None, &#39;age&#39;: None, &#39;sex&#39;: None}
Common Operations

Merge Dictionary # 🎜🎜#네 가지 방법이 있습니다:

정상 처리

In [15]: dict_1
Out[15]: {&#39;Tony&#39;: 24}
In [16]: dict_2
Out[16]: {&#39;ben&#39;: 18}
In [17]: dict3 = dict()
In [18]: for key, value in dict_1.items():
    ...:     dict_3[key] = value
    ...:
In [19]: for key, value in dict_2.items():
    ...:     dict_3[key] = value
    ...:
In [20]: dict_3
Out[20]: {&#39;Tony&#39;: 24, &#39;ben&#39;: 18}

update()

#🎜🎜 #

In [9]: dict_1
Out[9]: {&#39;Tony&#39;: 24}
In [10]: dict_2
Out[10]: {&#39;ben&#39;: 18}
In [12]: dict_3 = dict_1.copy()
In [13]: dict_3.update(dict_2)
In [14]: dict_3
Out[14]: {&#39;Tony&#39;: 24, &#39;ben&#39;: 18}
사전 dict(d1, **d2) 방법의 도움으로

In [33]: dict_1
Out[33]: {&#39;Tony&#39;: 24}
In [34]: dict_2
Out[34]: {&#39;ben&#39;: 18}
In [35]: dict_3 = dict(dict_1, **dict_2)
In [36]: dict_3
Out[36]: {&#39;Tony&#39;: 24, &#39;ben&#39;: 18}
Advanced

# 🎜🎜#Dictionary derivation

은 하단 레이어가 C로 구현된다는 장점이 있어 훨씬 빠르게 사용하는 것이 좋습니다. .

사전 키 값 교환

사전 이해를 사용하여 사전의 키 값을 쉽게 교환할 수 있습니다.

In [42]: dict_4
Out[42]: {24: &#39;Tony&#39;, 18: &#39;ben&#39;}
In [43]: dict_3
Out[43]: {&#39;Tony&#39;: 24, &#39;ben&#39;: 18}
In [44]: dict_4 = {k:v for v, k in dict_3.items()}
In [45]: dict_4
Out[45]: {24: &#39;Tony&#39;, 18: &#39;ben&#39;}
# 🎜🎜#

사전에서 하위 집합 추출

그 자체가 다른 사전의 하위 집합인 사전을 만들고 싶습니다.

예:

In [88]: a = {&#39;Ben&#39;: 18, &#39;Jack&#39;: 12, &#39;Ring&#39;: 23, &#39;Tony&#39;: 24}
In [89]: b = {k:v for k, v in a.items() if v > 18}
In [90]: b
Out[90]: {&#39;Ring&#39;: 23, &#39;Tony&#39;: 24}

순서가 지정된 사전 생성

Python3.6 이전의 사전은 순서가 없습니다. 그러나 때때로 우리는 사전의 질서를 유지해야 합니다. orderDict는 dict를 기반으로 사전의 질서를 달성할 수 있습니다. 여기서 순서는 사전 키가 삽입된 순서대로 배열하는 것을 의미합니다. -in, first-out dict. 용량이 한도를 초과하면 가장 먼저 추가된 키가 먼저 삭제됩니다.

예:

In [49]: from collections import OrderedDict
In [50]: ordered_dict = OrderedDict([(&#39;a&#39;, 2), (&#39;b&#39;, 4), (&#39;c&#39;, 5)])
In [51]: for key, value in ordered_dict.items():
    ...:     print(key, value)
    ...:
a 2
b 4
c 5

사전 생성 시 OrderedDict가 삽입 순서에 따라 정렬되는 것을 확인할 수 있습니다.

Principle: OrderedDict는 요소가 추가되는 순서에 따라 키 위치를 정렬하는 양방향 연결 목록을 내부적으로 유지 관리합니다. 이로 인해 OrderedDict의 크기도 2배 이상 커집니다. 평범한 사전.

목록에서 동일한 키를 가진 사전 병합

이는 소위 단일 키 다중 값 사전을 생성하는 것이며, 해당하는 여러 값을 저장해야 합니다. 목록이나 집합과 같은 다른 컨테이너에서는 여러 값이 고유해야 하는지 여부에 따라 다릅니다.

예:

In [64]: from collections import defaultdict
In [65]: a = [{&#39;a&#39;: 1}, {&#39;b&#39;: 3}, {&#39;c&#39;: 4}, {&#39;a&#39;:5}, {&#39;b&#39;:2}, {&#39;b&#39;: 4}]
In [66]: b = defaultdict(list)
In [67]: [b[k].append(v) for item in a for k, v in item.items()]
Out[67]: [None, None, None, None, None, None]
In [68]: b
Out[68]: defaultdict(list, {&#39;a&#39;: [1, 5], &#39;b&#39;: [3, 2, 4], &#39;c&#39;: [4]})
In [69]: b[&#39;a&#39;]
Out[69]: [1, 5]

두 사전 간의 유사점과 차이점 찾기

시나리오: 유사점과 차이점 찾기 두 사전 사이의 유사점과 차이점(동일한 키 또는 동일한 값 포함).

분석: 사전은 일련의 키 값 간의 매핑 모음입니다.

keys()는 사전의 모든 키를 반환합니다. 사전의 키는 집합 연산을 지원하므로 집합의 교집합과 보수를 사용하여 사전의 키를 처리할 수 있습니다.

items()는 (키, 값)으로 구성된 객체를 반환합니다. ) 및 집합 연산을 지원합니다. values()는 모든 값이 고유하다는 보장이 없기 때문에 집합 연산을 지원하지 않지만 연산을 판단해야 하는 경우 먼저 값을 변환할 수 있습니다. 그것을 달성하기 위해 세트로.

예:

In [78]: a = {&#39;a&#39;:1, &#39;b&#39;:2, &#39;c&#39;:3}
In [79]: b = {&#39;b&#39;:3, &#39;c&#39;:3, &#39;d&#39;:4}
In [80]: a.keys() & b.keys()
Out[80]: {&#39;b&#39;, &#39;c&#39;}
In [81]: a.keys() - b.keys()
Out[81]: {&#39;a&#39;}
In [82]: a.items() & b.items()
Out[82]: {(&#39;c&#39;, 3)}

또 다른 예는 사전을 생성할 때 특정 키가 제거될 수 있다고 예상됩니다.

In [85]: a
Out[85]: {&#39;a&#39;: 1, &#39;b&#39;: 2, &#39;c&#39;: 3}
In [86]: c = {k: a[key] for k in a.keys() - {&#39;b&#39;}}
In [87]: c
Out[87]: {&#39;a&#39;: 3, &#39;c&#39;: 3}

이 문서의 출처는 다음과 같습니다. #🎜 🎜#python tutorial

칼럼, 학습에 오신 것을 환영합니다!

위 내용은 당신이 알아야 할 Python 사전의 사용법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제