딕셔너리의 가장 큰 특징은 리스트나 튜플처럼 순차적으로 해당 요솟값을 구하지 않고 Key를 통해 Value를 얻는 것이다.
예를 들어, baseball이라는 단어의 뜻을 찾기 위해 사전의 내용을 순차적으로 모두 검색하는 것이 아닌 baseball 이라는 단어가 있는 곳만 펼쳐 보는 것이다.
{Key1:Value1, Key2:Value, Key3:Value3, ...}
다음은 기본 딕셔너리의 모습이다. Key와 Value의 쌍 여러 개가 { }로 둘러싸여 있다. 각각의 요소는 Key : Value
형태로 이루어져 있고 쉼표(,)로 구분되어 있다.
딕셔너리의 예시를 보면,
dic = {'name':'python', 'phone':'01012345678', 'birth':'0731'}
위에서 Key는 각각 'name', 'phone', 'birth' 이고, Value는 'python', '01012345678', '0731' 이 된다.
a = {1:'hi'}
#Key로 정수 값1, Value로 문자열 'hi'를 사용한 예
a = {'a':[1, 2, 3]}
#또한, Value에 리스트도 넣을 수 있다.
>>> grade = {'py': 10, 'thon': 99}
>>> grade['py']
10
>>> grade['thon']
99
딕셔너리에서 요솟값을 얻는 방법은 한가지이다. Key값을 사용해서 Value를 구하는 방법이다.
위 예에서 'py'라는 Key의 Value를 얻기 위해 grade['py']를 사용하였다.
어떤 Key값의 Value를 얻기 위해서는 딕셔너리변수이름[key]
를 사용한다.
>>> a = {1: 'a'}
>>> a[2] = 'b'
>>> a
{1: 'a', 2: 'b'}
{1: 'a'} 딕셔너리에 a[2] = 'b'와 같이 입력하면 딕셔너리 a에 Key가 2이고 Value가 'b'인 2:'b'라는 딕셔너리 쌍이 추가된다.
>>> a[3] = [1, 2, 3]
>>> a
{1: 'a', 2: 'b', 3: [1, 2, 3]}
Key에는 3, Value에는 [1, 2, 3]을 가지는 리스트를 추가하는 예를 보여준다.
>>> del a[1]
>>> a
{2: 'b', 3: [1, 2, 3]}
위의 예제는 딕셔너리의 요소를 지우는 것는 보여준다. del함수를 사용해서 del a[Key]
를 입력하면 Key에 해당하는 {key: value}쌍이 삭제된다.
>>> a = {1:'a', 1:'b'}
>>> a
{1: 'b'}
동일한 Key가 2개이므로 1:'a' 쌍이 무시되었다.
동일한 Key가 존재하면 어떤 Key에 해당하는 Value를 불러야 할지 알 수 없기 때문에 나머지 것들이 무시된다.
>>> a = {[1, 2] : 'hi'}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
딕셔너리의 Key로 쓸 수 있냐 없냐는 Key가 변하는 값인지 변하지 않는 값인지에 달려있다. 위의 예처럼 리스트를 Key로 설정하면 리스트를 키 값으로 사용할 수 없다는 오류가 발생한다.
>>> a = {'name': 'python', 'phone': '01012345678', 'birth': '0731'}
>>> a.keys()
dict_keys(['name', 'phone', 'birth'])
a.keys( )
는 딕셔너리 a의 Key만 모아서 dict_keys 객체를 돌려준다.
>>> for k in a.keys():
... print(k)
...
name
phone
birth
>>> list(a.keys())
['name', 'phone', 'birth']
>>> a.values()
dict_values(['python', '01012345678', '0731'])
Key를 얻는 것과 마찬가지로 Value만 얻고 싶다면 values함수를 사용하면 된다.
>>> a.items()
dict_items([('name', 'python'), ('phone', '01012345678'), ('birth', '0731')])
items 함수는 Key와 Value의 쌍을 튜플로 묶은 값을 dict_items 객체로 돌려준다.
>>> a.clear()
>>> a
{}
>>> a = {'name':'python', 'phone':'01012345678', 'birth':'0731'}
>>> a.get('name')
'python'
>>> a.get('phone')
'01012345678'
gey(x) 함수는 x라는 Key에 대응되는 Value를 돌려준다.
>>> a = {'name':'python', 'phone':'01012345678', 'birth':'0731'}
>>> 'name' in a
True
>>> 'email' in a
False