1. Home
  2. 프로그래밍 강좌/Python [리뉴얼중]
  3. [파이썬 강좌] #12 사전(Dictionary)

[파이썬 강좌] #12 사전(Dictionary)

딕셔너리란 말그대로 사전입니다. 우리가 사전을 보면 보통 단어가 나와 있고 그것에 대한 정의가 나와있죠? 파이썬의 딕셔너리 자료형 역시 어떤 단어(Key) 와 그것에 대한 내용(Value) 로써 데이터를 저장하게 됩니다.

 

다른 프로그래밍 언어에서는 보통 파이썬의 딕셔너리와 같이 키(Key) 와 값(Value) 으로 구성된 자료형(data type)을 맵(Map) 이라는 이름으로 제공합니다.
Java : Map Collection Class, C++ : Map Container
파이썬의 딕셔너리는 상당히 강력한 데이터 형식이며 JS(자바 스크립트) 에서도 유사하게 Object 라는 타입으로 기본 제공을 합니다.


사전 = {키1 : 값1, 키2 : 값2, 키3 : 값3} 


사전은 이런형태로 사용합니다. 각 키(Key)에 값(Value)가 1:1 대응되는 형식입니다

하나의 키에는 하나의 값만이 대응됩니다.

 

사전에서 단어를 찾으면 그에 대한 해설이 있는 것을 상상하면 쉽게 이해할 수 있습니다.
또한 Key 값은 절대로 변하지 않으며 Value 값은 변경할 수 있습니다.

 

그러면 이를 이용해서 간단한 영어 사전을 한번 만들어 보겠습니다.


Dictionary = {'exponentially':'기하급수적으로', 'velocity':'속도', 'volume':'용량'}

print(Dictionary)

>>> {'exponentially': '기하급수적으로', 'velocity': '속도', 'volume': '용량'}

 

파이썬에서 딕셔너리를 만들때 주의할점은 만들때 중괄호( { } )를 활용한다는 점입니다.
이번엔 명령어를 사용하여 딕셔너리에 값을 직접 추가해보겠습니다.

 

Dictionary = {}

Dictionary['사과'] = '마이쪙'
Dictionary['배'] = '마이쪙'

print(Dictionary)

>>> {'사과': '마이쪙', '배': '마이쪙'}

딕셔너리 아이템 추가시엔
사전명[Key1] = Value1 의 형식으로 추가합니다.

 

Dictionary = {}

Dictionary['사과'] = '마이쪙'
Dictionary['배'] = '마이쪙'

print(Dictionary['사과'])
>>> 마이쪙

사과의 벨류값을 가져오는 방법입니다.
사전명[키값] 의 형태로 찾아오시면 됩니다.

 

Dictionary = {}

Dictionary['사과'] = '마이쪙'
Dictionary['배'] = '마이쪙'

del Dictionary['배']
print(Dictionary)

>>> {'사과': '마이쪙'}

항목삭제를 할땐 del 키워드를 사용합니다.

 

파이썬 사전의 특징

mixable = {"float" : 1.02, 100: "숫자", "문자열1":"문자열2", "상태": True}
print(mixable)

>>> {'float': 1.02, 100: '숫자', '문자열1': '문자열2', '상태': True}

1. 리스트와 똑같이 다른 형의 데이터를 혼용하여 넣을 수 있습니다.

C# 이라는 프로그래밍 언어에서도 이와 비슷하게 ArrayList, Queue, Stack, Hashtable 란것이 존재하는데
파이썬처럼 어떤 타입의 데이터든 담을 수 있는것이 장점이지만 저장시에 Object(Boxing) 라는 형식으로 저장되고 사용시엔 원래의 데이터 형으로 바꾸는(언박싱) 작업이 이루어져서 효율이 떨어집니다.

 

num = {2 : "숫자2", 1: "숫자1"}
print(num)
>>> {2: '숫자2', 1: '숫자1'}

2. 따로 정렬 하지 않으면 순서가 없습니다.

파이썬의 리스트는 순서를 가지는 집합이지만 딕셔너리는 그렇지 않습니다.

 

리스트의 경우 순서가 있기에 인덱스(순번)를 이용해 접근이 가능하지만 딕셔너리의 경우 인덱스 접근 자체를 사용할 수 없습니다. 순서가 없기 때문입니다.

 

딕셔너리는 값 검색에 있어서 매우 훌륭한 성능을 지니는데 리스트의 경우 1이라는 요소가 리스트 전체에 있는지 존재하려면 리스트의 전체 항목을 처음부터 끝까지 순회하면서 값을 찾아내야 하지만 딕셔너리의 경우 1이라는 요소가 있는지 체크하려면 1이라는 Key가 존재하는지만 체크하면 되기 때문에 시간이 걸리지 않고 한번에 검색이 가능합니다.

 

woman = {"수지" : 25, "예린" : 22, "유리" : 24, "수진" : 26}

for w in woman.keys():
    print(w)

>>>
수지
예린
유리
수진

for문을 이용해 딕셔너리의 "키 값들"만 불러오는 예제입니다.

 

woman = {"수지" : 25, "예린" : 22, "유리" : 24, "수진" : 26}

for w in woman.values():
    print(w, end=' ')
>>> 25 22 24 26

벨류값들의 경우에도 이렇게 가져오시면 됩니다.

 

woman = {"수지" : 25, "예린" : 22, "유리" : 24, "수진" : 26}

for k,v in woman.items():
    print(k,v)

>>>
수지 25
예린 22
유리 24
수진 26

key, value를 동시에 가져오고 싶으시면 for문 반복 범위에 items() 를 사용해서 반복시켜 주시면 됩니다.


여기서 파이썬 for문의 독특한 점을 볼 수 있는데요.
,(콤마)를 찍어서 한꺼번에 for문을 돌릴 수 있습니다.

for문을 돌릴때 woman.items()에서 key,value 값을 빼오는데 저기서 k는 key가 되는것이고 v는 value가 되게 됩니다.

 

(k, v라는 이름은 순서만 맞다면 원하는 이름으로 지정해주시면 됩니다.)

dict_items([('수지', 25), ('예린', 22), ('유리', 24), ('수진', 26)])

참고로 woman.items() 를 print로 출력해보면 위와 같은 값이 출력됩니다. 저것을 for문을 돌려서 key , value를 순서대로 하나씩 빼와서 iteration(반복) 하는 것 입니다.

SNS 공유하기
네이버밴드
카카오톡
페이스북
X(트위터)

최근글
인기글
이모티콘창 닫기
울음
안녕
감사
당황
피폐