오늘도 개발

파이썬 딕셔너리(Dictionary) 본문

웹 프로그래밍/Python3

파이썬 딕셔너리(Dictionary)

Sueeeeeee 2022. 6. 5. 09:21

1.  딕셔너리(Dictionary)란?

딕셔너리는 해시 테이블(Hash Table)로 Key-Value값을 한 쌍으로 갖는다.

딕셔너리는 리스트처럼 순차적으로 자료형에 접근하는게 아니라 키를 통해 값에 접근한다. 

순서대로 값을 저장하지 않으며(unordered) 수정할 수 있는(mutable) 자료형이다. 

2.  딕셔너리(Dictionary) 사용하기

딕셔너리 생성

딕셔너리는 {}나 dict()로 생성할 수 있는데, {}가 dict()보다 처리 속도가 빠르다. 

키는 항상 고유한 값이라야 한다. 중복된 키가 있으면 하나는 무시되기 때문이다.

또한 키에는 항상 수정할 수 없는(immutable) 자료형만 사용할 수 있다. 

그래서 튜플은 키로 사용할 수 있지만 리스트는 키로 사용할 수 없다.

a = {'name' : 'Sue', 1: 'Hello', 'Likes' : [icecream, books]}
b = {}
c = dict()

 

딕셔너리 쌍 추가

a = {'name' : 'Charlie Brown'}
a['dog'] = 'Snoopy'

print(a)
# {'name': 'Charlie Brown', 'dog': 'Snoopy'}

 

딕셔너리 쌍 삭제

a = {'name' : 'Charlie Brown', 'dog': 'Snoopy', 'tall' : True}
del a['tall']
# {'name': 'Charlie Brown', 'dog': 'Snoopy'}

 

 

Key로 Value 얻기

a = {'name': 'Charlie Brown', 'dog': 'Snoopy'}
print(a['name'])
# Charlie Brown

3.  딕셔너리(Dictionary) 관련 함수

Keys() : 키 리스트 만들기

파이썬 2.7까지는 a.keys()의 반환값이 리스트지만

파이썬 3.0부터는 반환값이 dict_keys이다.

리스트를 반환할 때 메모리 낭비가 심해서 이렇게 바뀌었다.

 

dict_keys를 리스트로 변환할 수도 있지만 (list(dict_keys) 사용)

dict_keys, dict_values, dict_items 모두 기본적인 for문은 실행할 수 있다.

a = {'name' : 'Charlie Brown', 'dog': 'Snoopy'}
keyList = a.keys()

print(keyList)
# dict_keys(['name', 'dog'])

for key in keyList:
   print(key)
# name
# dog

 

Values() : 값 리스트 만들기

a = {'name' : 'Charlie Brown', 'dog': 'Snoopy'}
ValueList = a.values()

print(ValueList)
# dict_values(['Charlie Brown', 'Snoopy'])

 

items() : 키, 값 리스트 만들기

키, 값 쌍을 튜플로 묶어서 반환함.

a = {'name' : 'Charlie Brown', 'dog': 'Snoopy'}
ValueList = a.items()

print(ValueList)
# dict_items([('name', 'Charlie Brown'), ('dog', 'Snoopy')])

 

clear() : 키, 값 쌍 지우기

a = {'name' : 'Charlie Brown', 'dog': 'Snoopy'}
a.clear()
print(a)
# {}

 

get() : 키로 값 얻기

a['name']과 a.get('name')은 같은 일을 수행하지만 전자의 실행 속도가 더 빠르다.

존재하지 않는 키를 입력하는 경우 전자는 오류가 나지만

후자는 None을 반환하거나 미리 정해둔 디폴트 값을 가져온다.

a = {'name' : 'Charlie Brown', 'dog': 'Snoopy'}
print(a.get('name'))
# Charlie Brown

print(a.get('height', 'unknown'))
# unknown

 

in : 키가 딕셔너리 안에 있는지 확인하기

a = {'name' : 'Charlie Brown', 'dog': 'Snoopy'}
print('dog' in a)
# True

print('height' in a)
# False

 

 

참고

점프 투 파이썬 02-5 딕셔너리 자료형

The Performance Impact of Using dict() Instead of {} in CPython 2.7

'웹 프로그래밍 > Python3' 카테고리의 다른 글

for문과 range()함수  (0) 2022.06.05
파이썬 세트(Set)  (0) 2022.06.05
파이썬 튜플(Tuple)  (0) 2022.06.04
파이썬 리스트(List)  (0) 2022.06.03
파이썬의 출력 방법  (0) 2022.06.03