PYTHON. 02. 파이썬의 프로그래밍의 기초, 자료형. 02-5 딕셔너리 자료형
PYTHON/CONCEPT 2018. 1. 2. 10:19 |PYTHON. 02. 파이썬의 프로그래밍의 기초, 자료형.
02-5 딕셔너리 자료형
딕셔너리는 리스트나 튜플처럼 순차적으로(sequential) 해당 요소값을 구하지 않고 Key를 통해 Value를 얻는다. 이것이 바로 딕셔너리의 가장 큰 특징이다. baseball이라는 단어의 뜻을 찾기 위해 사전의 내용을 순차적으로 모두 검색하는 것이 아니라 baseball이라는 단어가 있는 곳만 펼쳐 보는 것이다.
딕셔너리는 어떻게 만들까?
{Key1:Value1, Key2:Value2, Key3:Value3 ...}
>>> dic = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
딕셔너리 dic의 정보
key | value |
---|---|
name | pey |
phone | 01199993323 |
birth | 1118 |
딕셔너리 쌍 추가, 삭제하기
1. 딕셔너리 쌍 추가하기
// 딕셔너리는 순서를 따지지 않고, 추가되는 순서는 원칙이 없다
>>> a = {1: 'a'}
>>> a[2] = 'b'
>>> a
{2: 'b', 1: 'a'}
>>> a['name'] = 'pey'
{'name':'pey', 2: 'b', 1: 'a'}
>>> a[3] = [1,2,3]
{'name': 'pey', 3: [1, 2, 3], 2: 'b', 1: 'a'}
2. 딕셔너리 요소 삭제하기
>>> del a[1]
>>> a
{'name': 'pey', 3: [1, 2, 3], 2: 'b'}
딕셔너리를 사용하는 방법
딕셔너리에서 Key 사용해 Value 얻기
>>> grade = {'pey': 10, 'julliet': 99}
>>> grade['pey']
10
>>> grade['julliet']
99
// 딕셔너리 변수에서 [] 안의 숫자 1은 두 번째 요소를 뜻하는 것이 아니라 Key에 해당하는 1을 나타낸다.
>>> a = {1:'a', 2:'b'}
>>> a[1]
'a'
>>> a[2]
'b'
>>> a = {'a':1, 'b':2}
>>> a['a']
1
>>> a['b']
2
>>> dic = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
>>> dic['name']
'pey'
>>> dic['phone']
'0119993323'
>>> dic['birth']
'1118'
딕셔너리 만들 때 주의할 사항
1. 딕셔너리에서 Key는 고유한 값이므로 중복되는 Key 값을 설정해 놓으면 하나를 제외한 나머지 것들이 모두 무시된다는 점을 주의해야 한다. 다음 예에서 볼 수 있듯이 동일한 Key가 2개 존재할 경우 1:'a'라는 쌍이 무시된다. 이때 꼭 앞에 쓴 것이 무시되는 것은 아니고 어떤 것이 무시될지는 예측할 수 없다. 결론은 중복되는 Key를 사용하지 말라는 것이다.
>>> a = {1:'a', 1:'b'}
>>> a
{1: 'b'}
2. Key에 리스트는 쓸 수 없다는 것이다. 하지만 튜플은 Key로 쓸 수 있다. 딕셔너리의 Key로 쓸 수 있느냐 없느냐는 Key가 변하는 값인지 변하지 않는 값인지에 달려 있다. 리스트는 그 값이 변할 수 있기 때문에 Key로 쓸 수 없는 것이다. 아래 예처럼 리스트를 Key로 설정하면 리스트를 키 값으로 사용할 수 없다는 형 오류(TypeError)가 발생한다.
>>> a = {[1,2] : 'hi'}
Traceback (most recent call last):
File "", line 1, in ?
TypeError: unhashable type
딕셔너리 관련 함수들
Key 리스트 만들기(keys)
>>> a = {'name': 'pey', 'phone': '0119993323', 'birth': '1118'}
>>> a.keys()
dict_keys(['name', 'phone', 'birth'])
// a.keys()는 딕셔너리 a의 Key만을 모아서 dict_keys라는 객체를 리턴한다.
dict_keys 객체는 다음과 같이 사용할 수 있다. 리스트를 사용하는 것과 차이가 없지만, 리스트 고유의 함수인 append, insert, pop, remove, sort등의 함수를 수행할 수는 없다.
>>> for k in a.keys():
... print(k)
...
phone
birth
name
Value 리스트 만들기(values)
>>> a.values()
dict_values(['pey', '0119993323', '1118'])
Key, Value 쌍 얻기(items)
>>> a.items()
dict_items([('name', 'pey'), ('phone', '0119993323'), ('birth', '1118')])
//items 함수는 key와 value의 쌍을 튜플로 묶은 값을 dict_items 객체로 돌려준다.
Key: Value 쌍 모두 지우기(clear)
>>> a.clear()
>>> a
{}
// clear() 함수는 딕셔너리 안의 모든 요소를 삭제한다. 빈 리스트를 [ ], 빈 튜플을 ()로 표현하는 것과 마찬가지로 빈 딕셔너리도 { }로 표현한다.
Key로 Value얻기(get)
>>> a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
>>> a.get('name')
'pey'
>>> a.get('phone')
'0119993323'
// get(x) 함수는 x라는 key에 대응되는 value를 돌려준다.
// 앞서 살펴보았듯이 a.get('name')은 a['name']을 사용했을 때와 동일한 결과값을 돌려받는다.
// 다만, 다음 예제에서 볼 수 있듯이 a['nokey']처럼 존재하지 않는 키(nokey)로 값을 가져오려고 할 경우
a['nokey']는 Key 오류를 발생시키고, a.get('nokey')는 None을 리턴한다는 차이가 있다. 어떤것을 사용할지는 여러분의 선택이다.
>>> a.get('nokey')
>>> a['nokey']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'nokey'
// 딕셔너리 안에 찾으려는 key 값이 없을 경우 미리 정해 둔 디폴트 값을 대신 가져오게 하고 싶을 때에는 get(x, '디폴트 값')을 사용하면 편리하다.
>>> a.get('foo', 'bar')
'bar'
해당 Key가 딕셔너리 안에 있는지 조사하기(in)
>>> a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
>>> 'name' in a
True
>>> 'email' in a
False
'PYTHON > CONCEPT' 카테고리의 다른 글
PYTHON. 02. 파이썬의 프로그래밍의 기초, 자료형. 02-7 자료형의 참과 거짓 (0) | 2018.01.02 |
---|---|
PYTHON. 02. 파이썬의 프로그래밍의 기초, 자료형. 02-6. 집합 자료형 (0) | 2018.01.02 |
PYTHON. 02. 파이썬의 프로그래밍의 기초, 자료형. 02-4 튜플 자료형 (0) | 2018.01.02 |
PYTHON. 02. 파이썬의 프로그래밍의 기초, 자료형. 02-3 리스트 자료형 (0) | 2017.12.30 |
PYTHON. 02. 파이썬의 프로그래밍의 기초, 자료형. 02-2 문자열 자료형(2) (0) | 2017.12.30 |