중화사전망 - 중국어 사전 - 사전을 성공적으로 사용하는 방법

사전을 성공적으로 사용하는 방법

이 문서에서는 파이썬 유형 계층을 살펴보고 사전 컨테이너 유형에 대해 설명합니다. 이전 문장 에서 설명한 Python tuple, string 및 list 컨테이너 유형과 달리 dictionary 유형은 키 값 매핑에 의존하는 정렬되지 않은 컨테이너입니다. 따라서 시퀀스 내의 요소 위치가 아니라 키 값을 기준으로 dictionary 의 요소에 액세스해야 합니다. 사전 유형의 고유한 특징은 심상치 않은 것처럼 보일 수 있지만 제대로 사용하면 강력한 기능을 제공합니다.

사전

우리 모두는 새로운 단어의 정의를 찾기 위해 언어 사전을 사용했습니다. 언어 사전은 주어진 단어 (예: 파이썬) 에 대한 표준 정보 세트를 제공합니다. 시스템은 정의 및 기타 정보를 실제 단어와 연결 (매핑) 합니다. 단어를 키 로케이터로 사용하여 관심 있는 정보를 찾습니다. 이 개념은 파이썬 프로그래밍 언어로 확장되어 dictionary 라는 특수한 컨테이너 유형이 되었습니다.

사전 데이터 유형은 여러 언어에 존재합니다. 데이터가 키 값과 연관되어 있기 때문에 연관 배열 또는 해시 테이블이라고도 합니다. 하지만 파이썬에서는 dictionary 가 좋은 대상이기 때문에 초보 프로그래머도 자신의 프로그램에서 쉽게 사용할 수 있습니다. 형식상 Python 의 사전은 이기종 가변 매핑 컨테이너 데이터 유형입니다.

사전을 작성하다

이 시리즈의 처음 몇 편의 문장 부분에서는 tuple, string, list 등 파이썬 프로그래밍 언어의 일부 컨테이너 데이터 유형에 대해 설명합니다 (참고 자료 참조). 이러한 컨테이너의 유사점은 모두 시퀀스를 기반으로 한다는 것입니다. 즉, 시퀀스 내의 요소 위치를 기준으로 해당 집합의 요소에 액세스할 수 있습니다. 따라서 a 라는 시퀀스가 주어지면 숫자 색인 (예: a[0]) 또는 조각 (예: a[ 1:5]) 을 사용하여 요소에 액세스할 수 있습니다. 파이썬의 사전 컨테이너 유형은 정렬되지 않은 모음이기 때문에 세 가지 컨테이너 유형과 다릅니다. 인덱스 번호 대신 키 값을 사용하여 컬렉션의 요소에 액세스합니다. 즉, 1 과 같이 키와 해당 값을 제공해야 하기 때문에 사전 컨테이너 구성이 tuple, string 또는 list 보다 더 복잡합니다.

목록 1. 파이썬으로 사전 만들기, 1 부분

& gt& gt& GTD = {0:' 0', 1:' 1', 2:' 2', 3:' 3', 4:' 4

& gt& gt& GTD

{0:' 0', 1:' 1', 2:' 2', 3:' 3', 4:' 4', 5:' 5'}

& gt& gt& gt 렌즈 (d)

& gt& gt& gttype(d) # 기본 객체는 dict 클래스입니다

& lt' ‘dict'& gt;; 를 입력합니다

& gt& gt& GTD = {} # 빈 사전 만들기

& gt& gt& gt 렌즈 (d)

& gt& gt& GTD = {1: 'one'} # 단일 사전을 작성합니다

& gt& gt& GTD

{1:' 하나'}

& gt& gt& gt 렌즈 (d)

& gt& gt& GTD = {'one': 1} # 키 값은 숫자가 아닐 수 있습니다

& gt& gt& GTD

{'one': 1}

& gt& gt& GTD = {'one': [0, 1, 2,3,4,5,6,7,8,9]}

& gt& gt& GTD

{'one': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]}

코드를 복사합니다

이 예제에서 보듯이 파이썬으로 사전을 만들기 위해 중괄호와 콜론으로 구분된 키 값 조합이 사용됩니다. 키 값 조합을 제공하지 않으면 빈 사전이 만들어집니다. 키-값 조합을 사용하면 크기가 필요할 때까지 하나의 요소만 있는 사전을 만들 수 있습니다. 다른 컨테이너 유형과 마찬가지로 내장 len 메서드를 사용하여 컬렉션에 있는 요소 수를 찾을 수 있습니다.

앞의 예는 사전 컨테이너에 대한 또 다른 중요한 문제도 보여 주었다. 키는 정수로 제한되지 않습니다. 정수, 부동 소수점, 튜플 또는 문자열을 포함한 모든 불변의 데이터 유형일 수 있습니다. 목록이 가변적이기 때문에 사전에서 키워드로 사용할 수 없습니다. 그러나 사전의 값은 모든 데이터 유형이 될 수 있습니다.

마지막으로, 이 예는 파이썬에 있는 dictionary 의 기본 데이터 유형이 dict 객체라는 것을 보여 줍니다. 파이썬에서 사전을 사용하는 방법을 이해하려면 목록 2 와 같이 내장 도움말 인터프리터를 사용하여 dict 클래스를 이해할 수 있습니다.

목록 2. 사전 도움말 보기

& gt& gt& gt 모듈 __builtin__ 에서 클래스 사전에 대한 도움말 (사전):

사전 (객체)

| dict ()-> 새로운 빈 사전.

| dict (매핑)-> 매핑된 객체의 새 사전 초기화

| (키, 값) 쌍.

| dict(seq)-> 다음과 같이 새 사전을 초기화합니다.

| d = {}

| k 의 경우 v 는 seq 에 있습니다.

| d [k] = v.

| dict (* * kwargs)-> 이름 = 값 쌍으로 새 사전 초기화

키워드 매개변수 목록의 |. 예: dict (1 = 1, 2 =2)

|

| 여기에 정의된 방법:

|

| _ _ CMP _ _ (...)

| X. _ _ CMP _ _ (y) < = = & gtcmp(x, y)

|

| _ _ 포함 _ _ (…)

| X. _ _ 포함 _ _ _(y)& lt;; = =>x 의 y

|

| _ _ delitem _ _ (...)

| X. _ _ delitem _ _ (y) < = = & gtdel x[y]

...... [/code] dict 클래스에 대한 도움말에 따르면 중괄호 대신 생성자를 사용하여 사전을 직접 만들 수 있습니다. Dictionary 를 만들 때 다른 컨테이너 데이터 유형보다 더 많은 데이터를 제공해야 하기 때문에 이러한 생성 방법이 복잡하다는 것도 놀라운 일이 아닙니다. 그러나 실제로 dictionary 를 사용하는 것은 어렵지 않습니다 (목록 3 참조).

목록 3. 파이썬으로 사전 만들기, 2 부

& gt& gt& gtl = [0, 1, 2,3,4,5,6,7,8,9]

& gt& gt& GTD = dict(l) (최근 호출의 마지막):

파일 "< 표준 입력 >, 줄 1,? : 사전을 변환할 수 없습니다

시퀀스 요소 #0 을 시퀀스로 업데이트

& gt& gt& gtl = [(0,' 0'), (1,' 1'), (2,' 2'), (3,'

& gt& gt& GTD = 사전 (l)

& gt& gt& GTD

{0:' 0', 1:' 1', 2:' 2', 3:' 3'}

& gt& gt& gtl = [[0,' 0'], [1,' 1'], [2,' 2'], [3,'

& gt& gt& GTD

{0:' 0', 1:' 1', 2:' 2', 3:' 3'}

& gt& gt& GTD = 사전 (l)

& gt& gt& GTD

{0:' 0', 1:' 1', 2:' 2', 3:' 3'}

& gt& gt& GTD = dict (0 =0, 1 = 1, 2 =2, 3 =3)

& gt& gt& GTD

{'0': 0,' 3': 3,' 2': 2,' 1': 1}

& gt& gt& GTD = dict(0 = 0, 1 = 1,2 = 2,3 = 3): 키워드는 표현식이 될 수 없습니다

코드를 복사합니다

보시다시피 사전을 만들려면 키 값과 데이터 값이 필요합니다. 일치하는 키-데이터 값 쌍이 없기 때문에 첫 번째 시도에서 목록에서 사전을 만들지 못했습니다. 두 번째와 세 번째 예는 사전을 올바르게 만드는 방법을 보여 줍니다. 첫 번째 경우 list 를 사용합니다. 여기서 각 요소는 튜플입니다. 을 눌러 섹션을 인쇄할 수도 있습니다 두 번째 경우에도 목록이 사용되지만 각 요소는 다른 목록입니다. 두 경우 모두 내부 컨테이너는 키 대 데이터 값 매핑을 가져오는 데 사용됩니다.

Dict 컨테이너를 직접 만드는 또 다른 방법은 키 대 데이터 값 매핑을 직접 제공하는 것입니다. 이 기술을 사용하면 키와 해당 값을 명시적으로 정의할 수 있습니다. 이 방법은 그다지 유용하지 않다. 왜냐하면 너는 중괄호로 같은 임무를 완성할 수 있기 때문이다. 또한 이전 예제와 같이 숫자를 키로 사용할 수 없습니다. 그렇지 않으면 예외가 발생합니다.

사전 액세스 및 수정

사전을 작성한 후에는 사전을 구성하는 데이터에 액세스해야 합니다. 액세스는 목록 4 와 같이 모든 파이썬 컨테이너 데이터 유형의 데이터에 액세스하는 것과 유사합니다.

목록 4. 사전의 요소 액세스

& gt& gt& GTD = dict (0 =0, 1 = 1, 2 =2, 3 =3)

& gt& gt& GTD

{'0': 0,' 3': 3,' 2': 2,' 1': 1}

& gt& gt& gtd[' 0']

& gt& gt& gtd[' 3']

& gt& gt& GTD = {0:' 0', 1:' 1', 2:' 2', 3:' 3', 4:' 4

& gt& gt& gtd[0]

영'

& gt& gt& gtd[4]

4 피트

& gt& gt& gtd[6] (최근 호출의 마지막 통화):

파일 "< 표준 입력 >, 줄 1,? : 6

& gt& gt& gtd[:- 1] (최근 호출의 마지막 통화):

파일 "< 표준 입력 >, 줄 1,? : 청소할 수 없는 유형입니다

코드를 복사합니다

보시다시피 dictionary 에서 데이터 값을 가져오는 프로세스는 모든 컨테이너 유형에서 데이터를 가져오는 프로세스와 거의 같습니다. 컨테이너 이름 뒤의 대괄호 안에 키 값을 배치합니다. 물론 dictionary 는 숫자가 아닌 키 값을 가질 수 있습니다. 이전에 이 데이터 유형을 사용한 적이 없다면 적응하는 데 시간이 걸릴 것입니다. 순서는 dictionary 에서 중요하지 않으므로 (dictionary 의 데이터 순서는 임의임) 다른 컨테이너 데이터 유형에 사용할 수 있는 fragment 함수는 dictionary 에서 사용할 수 없습니다. 세그먼트를 사용하거나 존재하지 않는 키에서 데이터에 액세스하려고 하면 예외가 발생하고 관련 오류가 나타납니다.

파이썬의 dictionary 컨테이너도 가변 데이터 유형이므로 만든 후 수정할 수 있습니다. 체크리스트 5 에서와 같이 데이터 값에 새 키 매핑을 추가하고, 기존 매핑을 수정하고, 매핑을 삭제할 수 있습니다.

목록 5. 사전을 수정하다

& gt& gt& GTD = {0:' 0', 1:' 1', 2:' 2', 3:' 3'}

& gt& gt& gtd[0]

영'

& gt& gt& gtd[0] =' 0' 입니다

& gt& gt& GTD

{0:' 0', 1:' 1', 2:' 2', 3:' 3'}

& gt& gt& gtd[4] = 4

& gt& gt& gtd[5] = 5

& gt& gt& GTD

{0:' 0', 1:' 1', 2:' 2', 3:' 3', 4:' 4', 5:' 5'}

& gt& gt& gtdel d[0]

& gt& gt& GTD

{1:' 1', 2:' 2', 3:' 3', 4:' 4', 5:' 5'}

& gt& gt& gtd[0] =' 0' 입니다

& gt& gt& GTD

{0:' 0', 1:' 1', 2:' 2', 3:' 3', 4:' 4', 5:' 5'}

코드를 복사합니다

Listing 5 는 몇 가지 요점을 보여준다. 먼저 데이터 값을 쉽게 수정할 수 있습니다. 새 값을 적절한 키에 지정합니다. 둘째, 데이터에 새 키를 추가하는 매핑은 간단합니다. 관련 데이터를 새 키 값에 할당합니다. 파이썬은 모든 처리를 자동으로 수행합니다. Append 와 같은 특별한 메서드를 호출할 필요는 없습니다. 사전 컨테이너에서는 순서가 중요하지 않으므로 사전 뒤에 매핑을 추가하는 것이 아니라 컨테이너에 추가하기 때문에 이해하기 쉬워야 합니다. 마지막으로 맵을 삭제하는 방법은 del 연산자와 컨테이너에서 삭제해야 하는 키를 사용하는 것입니다.

체크리스트 5 에서 키 값이 숫자 순서로 표시되는 것은 약간 이상하게 보입니다. 이 순서는 매핑이 삽입된 순서와 같습니다. 내 뜻을 오해하지 마라, 상황이 항상 그런 것은 아니다. 파이썬 사전의 매핑 순서는 임의적이며 동일한 파이썬 인터프리터를 사용하여 동일한 코드를 여러 번 실행해도 다른 파이썬 설치에 대해 변경될 수 있습니다. 한 사전에서 서로 다른 유형의 키와 데이터 값을 사용하면 체크리스트 6 과 같이 쉽게 확인할 수 있습니다.

Listing 6. 이기종 컨테이너

& gt& gt& GTD = {0:' 0',' 1': 1}

& gt& gt& GTD

{0:' 0',' 1': 1

& gt& gt& gtd[0]

영'

& gt& gt& gt 유형 (d[0])

& lt "문자열" 유형>

& gt& gt& gtd[' 1']

& gt& gt& gt 유형 (d['one'])

& lttype' int'>

& gt& gt& gtd['two'] = [0, 1, 2]

& gt& gt& GTD

{0:' 0',' 2': [0, 1, 2],' 1': 1}

& gt& gt& gtd[3] = (0, 1, 2,3)

& gt& gt& GTD

{0:' 0', 3: (0, 1, 2, 3),' 2': [0, 1, 2],';

& gt& gt& gtd[3] =' 튜플 1 개'

& gt& gt& GTD

{0:' 0', 3:' 튜플 하나',' 2': [0, 1, 2],' 1': 1}

코드를 복사합니다

이 예제에서 볼 수 있듯이 여러 데이터 유형의 키와 데이터 값을 하나의 사전에서 사용할 수 있습니다. 사전을 수정하여 새 유형을 추가할 수도 있습니다. 마지막으로 생성된 사전의 순서가 삽입된 데이터의 순서와 일치하지 않습니다. 기본적으로 dictionary 에서 요소의 순서는 Python dictionary 데이터 유형의 실제 구현에 의해 제어됩니다. 새로운 파이썬 인터프리터는 이 순서를 쉽게 변경할 수 있으므로 사전에 있는 요소의 특정 순서에 의존하지 않아도 됩니다.

사전으로 프로그래밍하다

공식적인 파이썬 데이터 유형인 dictionary 는 더 간단한 다른 데이터 유형에서 지원하는 대부분의 작업을 지원합니다. 이러한 작업에는 다음과 같은 일반 관계 연산자가 포함됩니다

목록 7. 일반 관계 연산자

& gt& gt& GTD 1 = {0:' 0'}

& gt& gt& gtd2 = {'zero':0}

& gt>>D1< D2

& gt& gt& gtd2 = d 1

& gt>>D1< D2

& gt>>D1= = = D2

& gt& gt& gtid(d 1)

& gt& gt& gt 신분증 (D2)

& gt& gt& gtd2 = d 1.copy ()

& gt>>D1= = = D2

& gt& gt& gtid(d 1)

& gt& gt& gt 신분증 (D2)

코드를 복사합니다

앞의 예는 두 개의 사전을 만들어 이를 사용하여 테스트했다

그런 다음 이 예제에서는 변수 d 1 에 지정된 사전을 다른 변수 D2 에 할당합니다. 내장 id () 메서드는 d 1 및 D2 에 대해 동일한 식별자 값을 반환하므로 복제 작업이 아님을 나타냅니다. 사전을 복사하려면 copy () 메서드를 사용할 수 있습니다. 이 예제의 마지막 몇 줄에서 볼 수 있듯이 사본은 원본 사전과 정확히 동일하지만 사전을 저장하는 변수에는 식별자가 다릅니다.

파이썬 프로그램에서 사전을 사용할 때 사전에 특정 키 또는 값이 포함되어 있는지 확인할 수 있습니다. Listing 8 과 같이 이러한 체크는 쉽게 수행할 수 있다.

목록 8. 조건 테스트 및 사전

& gt& gt& GTD = {0:' 0', 3:' 1 튜플',' 2': [0, 1, 2],' 1''

& gt& gt& gt 키 ()

[0,3,' 2',' 1']

D.keys () 에서 0 인 경우>& gt& gt>:

... true 인쇄

...

& gt& gt& gt d 중 "a" 인 경우:

... true 인쇄

...

& gt& gt& gt d 중' 4' 인 경우:

... 인쇄' 사전에는 4 개' 가 포함되어 있습니다

... d 의 elif“two ":

... 인쇄' 사전에는 두 개의' 가 포함되어 있습니다

... 두 개 포함

코드를 복사합니다

사전의 가운데 버튼이나 데이터 값의 멤버십을 테스트하는 것은 매우 간단합니다. Dictionary 컨테이너 데이터 유형은 keys () 메서드 및 values () 메서드 등 몇 가지 내장 메서드를 제공합니다 (여기서는 설명하지 않음). 이러한 메서드는 각각 호출 사전의 키 또는 데이터 값 목록을 반환합니다.

따라서 값이 사전의 키인지 확인하려면 in 연산자를 사용하여 값이 keys () 메서드를 호출하여 반환된 키 값 목록에 있는지 확인해야 합니다. 비슷한 작업을 사용하여 값이 values () 메서드를 호출하여 반환된 데이터 값 목록에 있는지 확인할 수 있습니다. 그러나 사전 이름은 속기 기호로 사용할 수 있습니다. 일반적으로 데이터 값 (키 값 아님) 이 사전에 있는지 알고 싶어하기 때문에 의미가 있습니다.

파이썬 탐색, 6 부에서는 for 루프를 사용하여 컨테이너의 요소를 트래버스하는 것이 얼마나 쉬운지 알 수 있습니다. Python 사전에도 동일한 기술이 적용됩니다 (목록 9 참조).

목록 9. 반복 및 사전

& gt& gt& GTD = {0:' 0', 3:' 1 튜플',' 2': [0, 1, 2],' 1''

D.iterkeys () 의 k 에 대한>& gt& gt>:

... d 인쇄 [k]

... 튜플

[0, 1, 2]

D.itervalues () 의 v 에 대한>& gt& gt>:

... 인쇄

... 튜플

[0, 1, 2]

D.iteritems () 의 k, v 에 대한>& gt& gt>:

... d 인쇄 [',k,'] =', v

... [0] = 0 [3] = 튜플 1 개 [2] = [0, 1, 2][ 1] = 1

코드를 복사합니다

이 예제에서는 iterkeys (), itervalues () 또는 iteritems () 메서드에서 반환된 파이썬 반복자를 사용하는 세 가지 사전 통과 방법을 보여 줍니다. 또한 d.iterkeys () 와 같은 적절한 메서드를 사전에서 직접 호출하여 이러한 메서드가 컨테이너 데이터 유형 대신 반복자를 반환하는지 확인할 수 있습니다. ) iterkeys () 메서드를 사용하면 사전의 키를 트래버스할 수 있고 itervalues () 메서드를 사용하면 사전에 포함된 데이터 값을 트래버스할 수 있습니다. 반면 iteritems () 메서드를 사용하면 키와 데이터 값 간의 매핑을 동시에 트래버스할 수 있습니다.

사전: 또 다른 강력한 파이썬 컨테이너

이 기사에서는 파이썬 사전 데이터 유형에 대해 설명합니다. Dictionary 는 특정 숫자 순서가 아닌 키-데이터 값 매핑에 따라 컨테이너의 요소에 액세스하는 이기종 가변 컨테이너입니다. Dictionary 에서 요소를 쉽게 액세스, 추가 및 삭제할 수 있으며 dictionary 는 if 문이나 for 루프와 같은 복합 문에 쉽게 사용할 수 있습니다. 모든 유형의 데이터를 dictionary 에 저장할 수 있으며 이름이나 tuple 과 같은 다른 복합 키 값을 통해 액세스할 수 있으므로 Python dictionary 를 통해 개발자는 간결하고 강력한 프로그래밍 문을 작성할 수 있습니다.