본문 바로가기

프로그래밍/Python

파이썬 강좌 :: 15. 딕셔너리(dict) 자료형

이 글에선 파이썬의 자료형인 딕셔너리(dict)의 정의와 사용법을 다루고 있습니다.





자료형 딕셔너리란?


파이썬에서 제공하는 자료형, 딕셔너리(dictionary)는 데이터를 사전 형식으로 저장한다 하여 붙여진 이름입니다.



딕셔너리의 내부 구조


딕셔너리형은 데이터를 Key와 Value로 구성하여 저장하게 됩니다. 여기서 Key의 역할이 중요한데, 영어사전에 대비시키면 영어 단어에 해당합니다. 그리고 Value는 영어 단어의 뜻에 해당하죠.



딕셔너리의 성능


딕셔너리의 Key-Value 구조 덕분에 Value 값을 읽을 때, 상수 값의 시간이 걸립니다. 그 이유는 Key값을 이용하여 해쉬 테이블을 형성하기 때문인데요. 이 때문에 다른 프로그래밍 언어에서는 Map 혹은 HashTable 이라고 부릅니다.


Apple

noun . The round fruit of a tree of the rose family, which typically has thin red or green skin and crisp flesh.





딕셔너리 사용하기


딕셔너리 코드 형식


딕셔너리의 코드 형식은 다음과 같습니다.


{ Key : value  , Key : value ... }


중괄호 내부에 Key-Value 쌍을 쉼표로 구분해서 여러 쌍 집어넣는 형식입니다.


예를 들어 다양한 과일들의 가격을 딕셔너리 형식으로 저장하고자 한다면 다음과 같은 코드를 작성할 수 있습니다.


fruit_price = { 'banana' : 1000, 'apple' : 500, 'orange' : 800 }



Key를 사용하여 Value 읽기


딕셔너리에 저장된 데이터는 반드시 키 값을 통해서만 접근할 수 있습니다. 딕셔너리는 Key-Value 쌍을 순서없이 저장하기 때문에 인덱스로 접근할 수 없습니다.


>>> fruit_info = { 'banana' : 1000, 'apple' : 500, 'orange' : 800 }

>>> fruit_info['banana']

1000

>>> fruit_info[0]

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

KeyError: 0

>>>





새로운 키 값 추가하기


기존의 딕셔너리에 새로운 { 키 값 : 데이터 } 쌍을 추가하는 방법은 매우 간단해요. 다음과 같이 딕셔너리에 추가하고 싶은 키 값을 넣고 값을 대입해주면 된답니다.


>>> fruit_info = { 'banana' : 1000, 'apple' : 500, 'orange' : 800 }

>>> fruit_info['melon'] = 1500

>>> fruit_info

{ 'banana' : 1000, 'apple' : 500, 'orange' : 800, 'melon' : 1500 }

>>>




기존 키 값 삭제하기


딕셔너리에 존재하는 특정 키 값을 삭제하기 위해서는 딕셔너리의 pop 메서드를 사용해야 해요.


dict.pop(Key) # 해당 딕셔너리에 Key 값을 제거한다.


예를 들어 우리가 위에서 사용했던 fruit_info 딕셔너리에서 'banana' 키 값을 제거하고 싶다면 다음과 같은 코드를 작성해주어야 해요.


fruit_info.pop('banana')


만약 딕셔너리에 존재하지 않는 키 값을 제거하려고 한다면 다음처럼 에러가 발생할 거에요.


>>> fruit.info.pop('cherry')

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

KeyError: 'cherry'

>>>


때문에 딕셔너리의 키 값을 제거할 때는 키 값이 존재하는 지 확인해주는 작업이 필요하겠죠?




키 값 존재여부 검사


in 연산자를 사용하면 딕셔너리 내부에 해당 키 값이 존재하는지 확인할 수 있어요. in 연산자는 다음과 같은 형태로 사용되며 연산 결과로 True 혹은 False를 반환해요.


<Key> in <dict>


연습삼아 fruit_info 딕셔너리를 이용해 in 연산자를 사용해봐요.


>>> fruit_info = { 'banana' : 1000, 'apple' : 500, 'orange' : 800 }

>>> 'cherry' in fruit_info

False

>>> 'apple' in fruit_info

True

>>>


키 값 'cherry'는 딕셔너리에 존재하지 않기때문에 False를 반환하고, 키 값 'apple'은 딕셔너리에 존재하기 때문에 True를 반환하고 있다는 것을 알 수 있겠죠?