Python 프로그래밍/Python 초급

파이썬 초급9 (딕셔너리 - 자료형)

NOP(No Operation) 2020. 2. 15. 00:28

파이썬 딕셔너리 자료형


1. 딕셔너리


지금까지 배웠던 시퀀스 자료형은 값을 순서대로  연속적으로 이어져 있었지만

딕셔너리(Dictionary)는 좀 다릅니다.

 

딕셔너리(Dictionary)는 값을 넣으면 순서대로 저장하지 않고 Key와 Value로 분할하여 저장합니다.

예를 들어 나이=20, 성별=남 이런식으로 두 개의 값을 묶어서 저장합니다.

 

1. 딕셔너리 선언 법


파이썬 IDLE를 켜 [Ctrl+N]으로 새로운 창을 만들어줍니다.

 

일단 먼저 우리가 배운 대로 리스트로 사람이란 변수를 만들고

이름 나이 성별을 넣는다고 가정해 보겠습니다.

1
person = ['홍길동',46,'남']
cs

이런 식으로 선언해 "person[0]=이름, person[1]=나이, person[2]=성별"

으로 불러올 수는 있지만 만약 이름 나이 주소 형제..... 이렇게 엄청나게 많은 정보를 요구한다면 0~N번까지 외우기는 힘들고 비효율적일 것입니다.

 

딕셔너리는 그런 문제를 쉽게 해결하게 도아줍니다.

먼저 기본 모습 먼저 알아보겠습니다.

1
person = {'이름':'홍길동','나이':46,'성별':'남'}
cs

위처럼 딕셔너리는 "Key"와 "Value"의 쌍으로 이루어집니다.

왼쪽이 "Key", 오른쪽이 "Value" 형태로 이루어지며 "Key:Value"와 같은 형태로 선언합니다.

여기서 중요한 것은 Key는 중복을 허용하지 않지만 Value는 중복을 허용합니다.

※만약 중복된 경우 뒤에 선언한 값을 Value와 같이 저장합니다.

"{ }"로 중괄호로 요소를 둘러싸 줘야 합니다.

 

그럼 딕셔너리 타입으로 선언해 봅시다.

1
2
3
4
person = {'이름':'홍길동','나이':46,'성별':'남'#왼쪽이 Key 오른쪽이 Value가 된다.
print(person['이름']) #이름이란 Key의 Value 출력.
print(person['나이']) #나이이란 Key의 Value 출력.
print(person['성별']) #성별이란 Key의 Value 출력.
cs

 

실행해 봅시다.

프로젝트 폴더에 "7 딕셔너리"저장해 줍니다.

 

 

아래와 같이 출력됩니다.

 

2. 딕셔너리 쌍 추가와 삭제


※딕셔너리는 시퀀스 자료형처럼 인덱싱이 불가능합니다.

딕셔너리 자료형은 Key로만 Value를 얻어야 하기 때문에 슬라이싱과 인덱싱이 불가능합니다.

 

딕셔너리에 쌍을 추가해 보겠습니다.

1
2
3
4
5
6
person = {'이름':'홍길동','나이':46,'성별':'남'#왼쪽이 Key 오른쪽이 Value가 된다.
print(person['이름']) #이름이란 Key의 Value 출력.
print(person['나이']) #나이이란 Key의 Value 출력.
print(person['성별']) #성별이란 Key의 Value 출력.
person['아버지']='부를수 없음' #딕셔너리의 경우 person[~~]=*&^의 꼴로 입력하면 Key가 '~~' Value가 '*&^'로 쌍이 추가된다.
print(person['아버지']) #추기된 Key를 확인해본다.
cs

 

잘 실행되는지 확인해 봅시다.

 

 

아주 잘 실행됩니다.

 

그럼 여기서 딕셔너리의 요소를 삭제해 보겠습니다.

1
2
3
4
5
6
7
8
9
person = {'이름':'홍길동','나이':46,'성별':'남'#왼쪽이 Key 오른쪽이 Value가 된다.
print(person['이름']) #이름이란 Key의 Value 출력.
print(person['나이']) #나이이란 Key의 Value 출력.
print(person['성별']) #성별이란 Key의 Value 출력.
person['아버지']='부를수 없음' #딕셔너리의 경우 person[~~]=*&^의 꼴로 입력하면 Key가 '~~' Value가 '*&^'로 쌍이 추가된다.
print(person['아버지']) #추기된 Key를 확인해본다.
print(person) #person의 Key와 Value를 확인해본다.
del person['아버지'#부를수도 없는 아버지를 삭제해 봅시다.
print(person) #아버지가 삭제 되었습니다.
cs

 

자 실행해 보겠습니다.

 

 

네 아버지가 삭제가 된 걸 확인할 수 있습니다.

 

3. 딕셔너리 관련 함수


설명은 코드와 주석으로 대체하겠습니다.

딕셔너리의 Key만 뽑아서 보는 법(keys)

1
2
person = {'이름':'홍길동','나이':46,'성별':'남'#왼쪽이 Key 오른쪽이 Value가 된다.
person.keys() #person Key만 모아서 출력 합니다.
cs

딕셔너리 Value만 뽑아서 보는 법(values)

1
2
person = {'이름':'홍길동','나이':46,'성별':'남'#왼쪽이 Key 오른쪽이 Value가 된다.
person.values() #person의 Value만 모아서 출력 합니다.
cs

딕셔너리 Key와 Value 보는 법(items)

1
2
person = {'이름':'홍길동','나이':46,'성별':'남'#왼쪽이 Key 오른쪽이 Value가 된다.
person.items() #person의 Key와 Value 출력 합니다.
cs

딕셔너리 Key와 Value 모두 지우는 법(clear)

1
2
person = {'이름':'홍길동','나이':46,'성별':'남'#왼쪽이 Key 오른쪽이 Value가 된다.
person.clear() #person의 Key와 Value를 비워 줍니다.
cs

딕셔너리 Key와 Value 얻는 법(get)

1
2
3
person = {'이름':'홍길동','나이':46,'성별':'남'#왼쪽이 Key 오른쪽이 Value가 된다.
person.get('이름'#person의 Key가 '이름'인 것을 반환한다. person['이름']과 같은 뜻이다.
person.get('생일'#person의 Key가 없는 것이여도 오류가 생기지 않고 None를 반환한다. person['생일']을 하면 오류가 발생한다.
cs

딕셔너리 Key가 딕셔너리 안에 존재하는지 확인하는 법(in)

1
2
3
person = {'이름':'홍길동','나이':46,'성별':'남'#왼쪽이 Key 오른쪽이 Value가 된다.
print('이름' in person) #person Key안에 '이름'이 있는지 확인 후 True/False중 True를 반환한다.
print('홍길동' in person) #person Key안에 '홍길동이 있는지 확인 후 True/False중 False를 반환한다.
cs

 

딕셔너리는 매우 자주 사용되는 자료형이니 숙지해주세요.

※요약

더보기

딕셔너리는 Key와 Value로 이뤄져 있으며

시퀀스 자료형처럼 이어져 있는 게 아닌 Key로 Value를 뽑아내는 방식이다.

Key와 Value로 한쌍으로 저장해 Key로 뽑아내는 방식은 매우 유용하며

실제로 많이 쓰이는 자료형이다.


※숙제

더보기

딕셔너리 안에 리스트와 튜플을 선언해보고

딕셔너리 안에 있는 자료형의 타입을 확인해주세요.

hint type(person['이름']))

오늘은 파이썬의 딕셔너리 자료형에 대해서 배워보았습니다.

다음 시간에는 집합 자료형을 배워볼 것입니다.