티스토리 뷰

딕셔너리(dictionary)란?

딕셔너리는 사전을 뜻합니다. 사전에서 "글"이라는 단어의 뜻을 찾는다고 생각해보세요. "글 : 생각이나 일 따위의 내용을 글자로 나타낸 기록" 같은 형태로 단어의 뜻을 설명해줍니다. 딕셔너리도 이와 비슷합니다. "글"이라는 단어를 딕셔너리에서는 "키"라고 하고, 단어에 대한 설명 부분은 딕셔너리에서는 "값"이라고 합니다. 딕셔너리는 줄여서 딕트(dict) 타입이라고 합니다.

딕트 정의하기

딕트를 정의하는 방법은 2가지가 있습니다.


cafe = {'americano': 2100, "latte": 2800}


중괄호 안에 키와 값을 :(콜론)으로 구분해서 적고, 키값 쌍끼리 구분할 때는 쉼표로 구분해주시면 됩니다.


dict(americano=2100, latte=2800) #{'americano': 2100, 'latte': 2800}


두번째 방법은 dict()함수를 이용하는 것입니다. 딕트함수에 키와 값을 등호를 통해 넣어주시면 딕트가 만들어집니다.


값은 중복이되지만 키는 중복이 안된다는 것과 키에는 문자, 숫자, 튜플이 와야한다는 것을 알아주세요.

딕트에서 키 또는 값에 접근하기

해당 딕트에서 키 또는 값을 가져오는 방법을 알아보겠습니다. 일단 해당 딕트 자료형 안에 "키"가 있는지만 확인하고 싶을 때는 in을 사용하면 됩니다. 해당 키가 있을 경우 True를, 없을 경우엔 False를 반환합니다.

cafe = {'americano': 2100, 'latte': 2800}
"latte" in cafe #True
"juice" in cafe #False


키를 통해 값을 가져오는 방법은 2가지가 있습니다.


cafe["americano"] #2100
cafe.get("latte") #2800


딕트명[키] 또는 딕트명.get(키)를 통해서 키에 해당하는 값을 가져 올수 있습니다. 딕트명[키]의 경우 일치하는 키가 없으면 에러가 나고, 딕트명.get(키)는 일치하는 키가 없으면 아무것도 반환하지 않습니다.


cafe.get("juice", "not found") #'not found'


get()의 경우 두번째 값을 전달할 수 있습니다. 두번째 값은 일치하는 키를 찾지 못했을 때 나오는 구문입니다. 위의 코드는 cafe라는 딕트형에서 juice라는 키를 찾고, 없을 시에 "not found"라고 커맨드창에 나옵니다.

딕트에 값 추가하기

cafe라는 딕트형에 새로운 키값 쌍을 추가해볼까요?
 
cafe["juice"] = 2500
new_menu = {'tea': 2300, 'hot choco': 2700}
cafe.update(new_menu) #{'americano': 2100, 'latte': 2800, 'juice': 2500, 'tea': 2300, 'hot choco': 2700}


대괄호 사이에 키를 적고 괄호 오른쪽에 값을 적으면, 기존에 있던 키일 경우엔 수정이 일어나고, 기존에 없던 키일 경우엔 새롭게 추가됩니다. 여러개를 한번에 추가하고 싶을 땐 update(새로 추가할 딕트)를 사용하면 됩니다.


update 이용 시에 같은 키가 존재할 경우, 새롭게 추가되는 키값으로 덮어씌여집니다.

딕트에 값 삭제하기

추가하는 방법을 배웠으니 이제 삭제하는 방법을 배워보도록 하겠습니다.

del cafe['hot choco']
cafe.pop('tea')
#cafe = {'americano': 2100, 'latte': 2800, 'juice': 2500}


del과 pop()을 이용하면 딕트 안의 값을 삭제할 수 있습니다. del 뒤에 딕트명만 적어줄 경우엔 딕트 전체가 삭제됩니다.

keys(), values(), items() 활용하기

프로그래밍을 하다보면 딕트 타입에서 키만 가져와야 하거나 값들만 가져와야 하는 순간들이 있습니다. 이럴땐 keys()나 values()를 이용하면 그런 일들을 쉽게 할 수 있습니다.

cafe.keys() #dict_keys(['americano', 'latte', 'juice'])
cafe.values() #dict_values([2100, 2800, 2500])


이렇게 가져온 값들은 리스트 타입처럼 활용할 수 있습니다. items()는 키와 값을 튜플형으로 가져옵니다.


cafe.items() #dict_items([('americano', 2100), ('latte', 2800), ('juice', 2500)])


이런식으로 값들을 가져오는 것이 아직은 익숙하시지 않고 필요성도 못느낄 수도 있지만, 간단한 예를 통해서 좀 더 알아보도록 하겠습니다. 카페 메뉴의 가격을 백원씩 올려야 할 때 어떻게 하면 좋을까요?


for name, price in cafe.items():
    price = price + 100
    cafe[name] = price

#cafe = {'americano': 2200, 'latte': 2900, 'juice': 2600}


items()를 통해 가져온 값들을 키는 name이라는 변수에, 값은 price라는 변수에 담았습니다. 그리고 루프를 통해 값을 100원씩 올린 뒤에 수정된 가격을 올렸습니다.



다음 포스팅에는 자료형의 마지막인 set을 배워보도록 하겠습니다.



공감은 제작자에게 큰 힘이 됩니다.


'Backend-dev > python' 카테고리의 다른 글

파이썬의 조건문(if)  (1) 2018.04.02
파이썬의 자료형 set 알아보기  (0) 2018.03.30
파이썬의 자료형 튜플 알아보기  (0) 2018.03.30
파이썬의 자료형 list  (0) 2018.03.27
파이썬의 불리언(boolean) 값  (0) 2018.03.27
댓글