본문 바로가기

진리는어디에/Python

[Python] 시퀀스 자료형 #4 딕셔너리(dict)

이번 강좌에서는 파이썬에 키와 값(key-value)을 같이 저장 할 수 있는 dictionary 시퀀스에 대해 알아 보도록 한다.

목차

  1. 리스트(list)
  2. 튜플(tuple)
  3. 셑(set)
  4. >> 딕셔너리(dict)

딕셔너리(Dictionary) 란?

  • "키"와 "값" 형태로 데이터를 저장하는 자료구조.
  • 중복키를 허용하지 않는다.
  • 타입 이름으로 "dict"를 사용한다.
  • 배열 연산자를 통해 요소 접근이 가능하다.
  • 수정이 가능한 mutable 타입이다.

딕셔너리(Dictionary)의 생성

1. 타입 이름 'dict' 사용

# 타입 이름 'dict'를 이용해 생성
d = dict(name = "kim", age = 20, addr = "seoul")
print(d) # {'name': 'kim', 'age': 20, 'addr': 'seoul'}

2. 중괄호 '{}' 사용

셑(set)과 동일하게 중괄호를 사용하지만 요소가 하나만 들어간 셑과는 달리 딕셔너리는 중괄호 '{}' 를 사용 할 때, 콜론(:)으로 키와 값을 구분한다.

# 중괄호를 이용해 생성
d = { "name" : "kim", "age" : 20, "addr" : "seoul" }
print(d) # {'name': 'kim', 'age': 20, 'addr': 'seoul'}

위의 두가지 생성 방법은 동일한 결과를 만들지만 생성하는 포멧이 많이 다르다. 특히 타입 이름 'dict'를 이용해 딕셔너리를 생성 할 때 지금까지 보지 못한 형태의 파라메터 전달이 보인다.

name='kim' 형태는 '키워드 파라메터'라고하며, 값을 넘길 때 키를 지정해서 넘기는 방식이다. 자세한 사항은 함수를 다룰 때 자세히 설명하도록 하겠다. 

3. Dictionary Comprehension

d = { i : char(65 + i) for i in range(4) }
print(d)    # {0 : 'A', 1 : 'B', 2 : 'C', 3 : 'D'}

dictionary의 사용

dictionary 요소에 접근 방법

# dictionary 요소에 접근
# [] 연산자 사용
print(d['addr'])     # seoul

# get 메소드 사용
print(d.get('addr')) # seoul​

[] 와 get 메소드는 둘 다 요소에 접근하는데 사용 되지만, [] 연산자의 경우 해당 키가 dictionary에 없으면 KeyError 예외를 발생 시킨다. get 메소드는 예외를 발생 시키는 대신 None을 리턴한다.

print(d['weight'])                # KeyError: 'weight'
print(d.get('weight'))            # None
print(d.get('weight', 'Unknown')) # Unknown

get의 두번째 인자는 키를 찾지 못하는 경우 대신 리턴된다.

새로운 key/value 생성

d['weight'] = 60
print(d)             # {'name': 'kim', 'age': 20, 'addr': 'seoul', 'weight': 60}

dictionary 의 모든 key 조사

keys() 메소드를 이용해 딕셔너리의 모든 키를 가진 dict_keys 라는 iterable 객체를 리턴한다.

keys = d.keys()
print(keys) # dict_keys(['name', 'age', 'addr', 'weight'])

for k in keys :
    print(k, end=",") # name, age, addr

dictionary 의 모든 value 조사

values() 메소드를 이용해 딕셔너리의 모든 값을 가진 dict_values 라는 iterable 객체를 리턴한다.

values = d.values()
print(values) # dict_values(['kim', 20, 'seoul', 60])

for v in values :
    print(v, end=", ") # kim, 20, seoul, 60,

dictionary 의 모든 key, value 조사

items() 메소드를 이용해 딕셔너리의 모든 키와 값을 가진 dict_items라는 iterable 객체를 리턴한다. dict_items 객체는 튜플을 이용해 키와 값을 구분해 가지고 있다.

items = d.items() 
print(items)           # dict_items([('name', 'kim'), ('age', 20), ('addr', 'seoul'), ('weight', 60)])

for i in items :
    print(i, end=", ") # ('name', 'kim'), ('age', 20), ('addr', 'seoul'), ('weight', 60),

dictionary가 키를 가지고 있는지 조사

print('age' in d)      # True

모든 요소 지우기

d.clear()

마치며

이것으로 모든 파이썬 시퀀스들에 대해 살펴 보았다. 다음은 파이썬의 함수에 대해 알아 보는 시간을 가지도록 하겠다.

부록 1. 같이 보면 좋은 글

유익한 글이었다면 공감(❤) 버튼 꾹!! 추가 문의 사항은 댓글로!!