파이썬에서 딕셔너리(dictionart)는 리스트와 튜플처럼 어떤 것들의 집합이다.(맵 (map) 이라고도 불린다.)
(만약 당신이 자료구조중 해쉬맵을 알고 있다면 바로 그것과 같은 개념이다.)
딕셔너리는 리스트와 같은 많은 값의 집합이지만
이 값을 얻어낼 때는 정수 인덱스(딕셔너리에서 인덱스는 키(key)라고 한다)가 아니라 특정 데이터 타입의
인덱스를 쓸 수 있다 (하지만 대부분의 경우 문자열을 사용한다).
1 | stuff = {'hello':'Hello there, how are you?','chat':'How is the weather?','goodbye':'It was nice talking to you!'} |
딕셔너리에서는 [] 대신 {} 를 사용한다. 파이썬에서 딕셔너리 값을 말할 때는 {}를 사용한다.
{}안에 키 - 값 쌍을 입력한다.
키는 콜론 왼쪽에 오고, 값은 콜론 오른쪽에 온다. 딕셔너리에서 값을 얻을 때는 (리스트에서 아이템을 얻을 때와 같다.) 키(리스트의 인덱스와 같다)를 사용한다.
stuff['hello'], stuff['chat'], stuff['goobye'] 등을 입력해서 아이템을 참조한다.
딕셔너리와 리스트의 차이점
딕셔너리는 리스트와 다른데 가장 큰 차이점은 순서대로 정렬되어 있지 않다는 점이다.
리스트의 첫 번째 아이템은 list[0] 이지만 딕셔너리에는 첫 번째 아이템이라는 것이 없다.
딕셔너리에는 순서를 정할 방법이 없기 때문이다.
1 2 3 4 | >>> favorites1 = {'fruit':'apples','number':42,'animal':'cat'} >>> favorites2 = {'animal':'cat','number':42,'fruit':'apples'} >>> favorites1 == favorites2 True |
위 코드를 보듯이 favorites1 == favorites2 는 True가 되는데 딕셔너리는 순서대로 정렬하지 않기 때문이다.
다만 동일한 키 - 값 쌍이 있으면 같은 것으로 본다.
1 2 3 4 | >>> listFavs1 = ['apples','cats',42] >>> listFavs2 = ['cats',42,'apples'] >>> listFavs1 == listFavs2 False |
리스트는 순서가 있으므로 비록 값은 다 있어도 순서가 다르면 같은 게 아니다.
listFavs1과 listFavs2는 다른데 리스트에서는 순서가 중요하기 때문이다.
딕셔너리에서는 정수를 키로 슬 수 있다.
딕셔너리는 문자열 외에도 어떤 데이터 타입이라도 키로 쓸 수 있다.
0과 '0'은 다른 값이며 따라서 서로 다른 키임을 주의하자. 다음을 셸에서 수행해 보자.
1 2 3 4 5 6 | >>> spam = {'0':'a string',0:'an integer'} >>> spam[0] 'an integer' >>> spam['0'] 'a string' >>> |
딕셔너리에 정수 인덱스가 없으므로 for문을 쓰기 어려울 것이라고 생각할 수 있다. 하지만 매우 쉽다.
다음을 셸에서 수행해보다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | >>> favorites = {'ftuit':'apples', 'animal':'cats','number':42} >>> for i in favorites: print(i) animal number ftuit >>> >>> for i in favorites: print(favorites[i]) cats 42 apples >>> |
for 문에서 딕셔너리를 사용하면 변수 i는 딕셔너리의 키 값을 받게 된다.
하지만 딕셔너리는 순서대로 되어 있지 않으므로, for문에서 다음에 어떤 값에 대해 수행하게 될지 예상할 수 없다.
딕셔너리에는 2개의 메서드 keys()와 values()가 있다. 이 메서드는 각각 dick_keys 타입가 dick_values 타입의 값을 반환하는데.
이 데이터 타입에 대한 설명은 현재 진도 수준을 넘어가므로 생략하도록하고, 이 값은 list()함수로 쉽게 리스트로 바꿀 수 있다.
그러고 나면 순서대로 정렬된 키 값의 리스트를 얻을 수 있고, 딕셔너리 값도 마찬가지다. 다음을 셀에서 수행해 보자.
1 2 3 4 5 6 | >>> favorites = {'ftuit':'apples', 'animal':'cats','number':42} >>> list(favorites.keys()) ['animal', 'number', 'ftuit'] >>> list(favorites.values()) ['cats', 42, 'apples'] >>> |
이 메소드를 써서 딕셔너리의 키와 값의 리스트를 얻을 수 있다. keys()와 values()의 반환 값을 list()함수를 써서
리스트로 변환해야 함을 잊으면 안 된다. 그렇지 않으면 프로그램에서 에러가 발생한다.
딕셔너리에 리스트를 넣을 수 있다.
1 2 3 4 5 6 7 8 |
|
len() 으로 딕셔너리의 크기를 알 수 있다. (키-값 쌍이 몇개 있는지 알 수 있다.)
'Python > Python 기초' 카테고리의 다른 글
리스트 레퍼런스 (List References) (0) | 2014.09.25 |
---|---|
다중 대입 (Multiple assignment) (0) | 2014.09.24 |
리스트 (list) 와 문자열의 메서드 (0) | 2014.09.18 |
파이썬의 상수와 관행 (0) | 2014.09.18 |
다중 라인 문자열 (0) | 2014.09.18 |