자료구조 - 사전(dictionary)

사전 자료형은 아래와 같이 사용할 수 있습니다.



>>> 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']



사전에 어떤 키가 있는지 없는지 알고 싶으면 has_key를 이용합니다. 있으면 1, 없으면 0이라고 대답해주죠.



>>> family.has_key('boy')

1

>>> family.has_key('sister')

0
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2008/05/27 11:46 2008/05/27 11:46
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/3305

Trackback URL : http://tcbs17.cafe24.com/tc/trackback/3305

« Previous : 1 : ... 3124 : 3125 : 3126 : 3127 : 3128 : 3129 : 3130 : 3131 : 3132 : ... 6391 : Next »

블로그 이미지

- 홍반장

Archives

Recent Trackbacks

Calendar

«   2024/05   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
Statistics Graph

Site Stats

Total hits:
195944
Today:
362
Yesterday:
750