본문 바로가기
Python/왕초보를 위한 파이썬

4.4. 사전(Dictionaries)

by 가므자 2012. 4. 4.

오늘 제가 여러분과 함께 공부할 것은 사전 자료형이예요. 사전을 한번도 못 보신 분은 안 계시죠?

dic·tion·ar·y
n. pl. dic·tion·ar·ies
1. A reference book containing an alphabetical list of words, …

py·thon
n.
Any of various nonvenomous snakes of the family Pythonidae, …

사전 자료형으로 꼭 국어사전이나 백과사전 같은 것을 만들어야 하는 건 아니지만, 기억하기 쉽도록 영어 사전을 만들어 보겠습니다. 위의 자료들을 우리가 지금까지 배운 자료형을 사용해서 저장하려면 어떤 것이 좋을까요? 저장해뒀다가 dictionary라고 치면 'A reference book 주절주절…'하고 나오고, python이라고 하면 또 '궁시렁궁시렁…'하도록 말이죠.
목록?
튜플?
물론 그런 것들을 사용해도 만들 수는 있겠지만 결국 우리가 배울 사전 자료형과 비슷한 구조를 만들게 될 듯 싶네요. 사전 자료형은 아래와 같이 사용할 수 있습니다.

>>> dic = {}               # dic이라는 이름으로 비어있는 사전을 만든다.
>>> dic['dictionary'] = '1. A reference book containing an alphabetical list of words, ...'
>>> dic['python'] = 'Any of various nonvenomous snakes of the family Pythonidae, ...'
>>> dic['dictionary']      # dic아, ‘dictionary’가 뭐니?
'1. A reference book containing an alphabetical list of words, ...'

처음에 dic이라는 사전을 하나 만들고, 둘째, 셋째 줄에서는 dic에다가 자료를 좀 집어넣었지요. 그리고, 마지막 줄에선 dictionary의 뜻이 뭔지 조회를 해봤습니다.

영어가 너무 많아서 겁이 나십니까? --; 프로그래머가 영어 겁내서 쓰나요. 앞으로 공부를 하면 할수록 영어의 중요성을 느끼시게 될 겁니다.

그래도 영어에 약하신 분을 위해 포켓용 사전을 만들어 볼까요?

>>> smalldic = {'dictionary' : 'reference', 'python' : 'snake'}
>>> smalldic['python']           # 포켓용 사전아, ‘python’이 뭐니??
'snake'                         
>>> smalldic
{'dictionary': 'reference', 'python': 'snake'}

좀 더 깔끔해졌죠? 유심히 보시면 아까와는 조금 다른 방법으로 사전을 만들었다는 것도 아실 수 있겠지요?

이와 같이 사전 자료형은 키 : 값의 쌍으로 이루어진답니다. 아래의 표를 참고하세요.

키(Key) 값(Value)
dictionary 주절주절...
python 궁시렁궁시렁...
zoo 동물원

문자열, 리스트, 튜플은 숫자로 된 인덱스를 이용해 값을 조회하는데, 사전에서는 키를 이용한 다는 것이 큰 차이점이죠. 또, 사전 자료형은 해싱 기법을 이용하기 때문에 자료가 순서대로 저장되지 않는다고 하네요.

해싱 기법이 무엇일까요? 선생님이 학생들의 시험지를 보니 만득이가 빵점을 받았다고 합시다. 그래서 만득이를 찾아서 혼내주려고 하는데,

"1번, 네가 만득이니?" "아니요."
"2번, 네가 만득이니?" "아니오."

"3번, 네가 만득이니?" "아니오."

"40번, 네가 만득이니?" "아니오."

이렇게 만득이를 찾으려면 좀 오래 걸리겠죠? 하지만, 선생님이 "만득이 나와!"라고 하시면 바로 찾을 수 있지 않겠습니까? 이 방법이 바로 해싱 기법과 비슷하다고 생각하시면 됩니다. 자료를 아주 빨리 찾을 수 있는 방법이지요.

사전 자료형을 만들고, 원소를 추가하는 방법은 위에서 보신대로이구요, 원소를 삭제할 땐 이렇게 하시면 됩니다.

>>> del smalldic['dictionary']

사전을 리스트로 바꾸는 방법은 다음과 같구요.

>>> family = {'boy':'choi', 'girl':'kim', 'baby':'choi'}
>>> family                 # 값을 넣는 순서대로 저장되지는 않음.
{'girl': 'kim', 'boy': 'choi', 'baby': 'choi'}
>>> family.keys()          # 사전 family의 key들을 새로운 리스트에 담는다.
['girl', 'boy', 'baby']
>>> family.values()        # 사전 family의 값들을 새로운 리스트에 담는다.
['kim', 'choi', 'choi']

사전에 어떤 키가 있는지 없는지는 in을 써서 알아볼 수 있습니다. 있으면 True, 없으면 False라고 대답해주죠.

>>> 'boy' in family
True
>>> 'sister' in family
False

이런 것들을 외우려고 애쓰실 필요는 없습니다. 필요할 때마다 사용방법을 찾아서 쓰면 되는거지요.

그럼 모두 즐거운 하루 되세요~.

출처 : wikidocs 왕초보를 위한 파이썬

■ Dictionary
 
    # Dictionary 는 다음과 같이 표현된다.
 
        >>> person = { "first name" : "Robin", "last name" : "Hood",
        "occupation" : "scoundrel" }
        >>> print person["first name"]
        Robin
        >>> person["address"] = "Sherwood"    # insert new element
        >>> print person
        {'last name': 'Hood', 'first name': 'Robin', 'address': 'Sherwood',
        'occupation': 'scoundrel'}    # elements are orderd by hash algorithm
 
    # Dictionary의 Key는 Hash Tree 구조로 관리된다.
          따라서 Hash가 가능한 Object만 Key로 사용될 수 있다.
 
    # Value로는 모든 Object가 사용될 수 있다.

'Python > 왕초보를 위한 파이썬' 카테고리의 다른 글

4.6. 스페인어로 숫자 읽기(2)  (0) 2012.04.04
4.5. 연습문제  (0) 2012.04.04
4.3. 튜플(Tuples)  (0) 2012.04.03
4.2. 문자열과 목록  (0) 2012.04.03
4.1. 자료형  (0) 2012.04.03

댓글