파이썬 대표 자료구조의 하나인 딕셔너리를 살펴보자.
문자열과 리스트의 경우는 자료가 순차적으로 구성되어 있다.
그렇기때문에 오프셋을 이용해서 각 항목에 접근할 수 있었다.
>>> t_list = ['a','b','c'] >>> t_list ['a', 'b', 'c'] >>> t_list[0] 'a' >>> t_list[1] 'b' |
이런 방식은 특정 항목을 찾고자 할때 문제가 될 수 있다.
내가 'a'라는 값을 찾고 싶을때는 전체 리스트를 다 뒤져봐야 찾을 수 있다.
리스트가 몇개 안된다면 상관없겠지만, 그 수가 많아진다면 많은 시간이 소요될 수 있다.
특정값을 딱!하고 찾고 싶을때는 딕셔너리가 좋은 방안이 될 수 있다.
딕셔너리는 키와 값을 한쌍으로 항목을 관리한다.
그래서 키값을 알고 있으면 항목을 바로 찾을 수 있다.
>>> t_dict = {'a':'a항목','b':'b항목','c':'c항목'} >>> t_dict {'a': 'a항목', 'b': 'b항목', 'c': 'c항목'} >>> t_dict['a'] 'a항목' |
해당 키로 가져오는 값이 하나여야 하기 때문에 동일한 키를 이용해서 값을 저장할 순 없다.
딕셔너리에서 키는 유일해야 한다.
그렇기 때문에 예외가 발생... 할 줄 알았는데, 예외는 안생기고, 그냥 최종값이 업데이트 된다.
>>> t_dict = {'a':'a항목','b':'b항목','c':'c항목','c':'d항목'} # 키 'c'를 두번입력 >>> t_dict {'a': 'a항목', 'b': 'b항목', 'c': 'd항목'} # 마지막 'c'값만 남음 |
좀 더 세부적으로 살펴보자.
1. 딕셔너리 생성하기
딕셔너리를 생성하는 방법은 두가지가 있다.
중괄호({})를 이용하는 방법과 dict()함수를 이용하는 방법이다.
중괄호를 이용하는 방법은 중괄호 사이에 키와 값을 '키:값'과같이 매핑시켜주면 된다.
각 항목은 콤마(,)로 구분하면 된다.
t_dict = {'a':'a항목','b':'b항목','c':'c항목'} |
dict() 함수를 이용하는 방법은 변수를 딕셔너리 변수로 지정 한 후, 키에 값을 할당에 주면 된다.
>>> t_dict2 = dict() >>> t_dict2['MON'] = 'monday' >>> t_dict2 {'MON': 'monday'} |
또, 기존에 이미 만들어진 리스트나 튜플 등을 이용해 딕셔너리를 만들때 유용하다.
>>> letters_tuple = ('ab','cd','ef') # 'ab'를 키:값으로 구분. 'a':'b' >>> letters_dict = dict(letters_tuple) >>> letters_dict {'a': 'b', 'c': 'd', 'e': 'f'} >>> t_list = [('a','b'),('c','d'),('e','f')] # 각 항목이 튜플로 된 리스트도 딕셔너리로 변경가능 >>> t_dict = dict(t_list) >>> t_dict {'a': 'b', 'c': 'd', 'e': 'f'} |
2. 항목 조회 및 추가/변경
딕셔너리 항목을 조회할 때는 '딕셔너리명[키]'로 접근을 하면 값을 바로 가져올 수 있다.
추가/변경시에는 '딕셔너리명[키] = 값'을 할당하면된다.
딕셔너리에 키가 존재할 경우 해당 키에 대한 값이 변경되며,
키가 존재하지 않으면 키와 값이 추가된다.
>>> t_dict['a'] # 키를 이용한 항목 조회 'b' >>> t_dict['a'] = 100 # 'a'키가 존재하기 때문에 'a'키에 대한 값이 변경 >>> t_dict {'a': 100, 'c': 'd', 'e': 'f'} >>> t_dict['g'] = 200 # 'g'키가 존재하지 않기때문에 'g':200 항목 추가 >>> t_dict {'a': 100, 'c': 'd', 'e': 'f', 'g': 200} |
3. 항목 삭제
딕셔너리의 특정 항목을 삭제하고 싶을 때는 del 명령어를 사용한다.
모든 항목을 삭제하고 싶을 때는 clear() 메서드를 사용한다.
>>> t_dict {'a': 100, 'c': 'd', 'e': 'f', 'g': 200} >>> del t_dict['g'] >>> t_dict {'a': 100, 'c': 'd', 'e': 'f'} >>> t_dict.clear() # 모든 항목이 깔끔하게 삭제 >>> t_dict {} |
4. 다른 두 딕셔너리 결합
update() 메서드를 사용하면 다른 딕셔너리를 현재 딕셔너리로 결합할 수 있다.
만일 두 딕셔너리에 중복된 키가 있다면, 두번째 딕셔너리 값이 저장된다.
>>> t_dict {'a': 100, 'c': 'd', 'e': 'f'} >>> x_dict {'x': 'y', 'a': '300'} >>> t_dict.update(x_dict) >>> t_dict {'a': '300', 'c': 'd', 'e': 'f', 'x': 'y'} # 'a'키가 중복되어 두번째 딕셔너리 값 '300'이 입력됨 |
5. in을 이용한 항목검사
리스트에서도 in을 이용해서 항목검사를 했었다.
딕셔너리에서도 항목검사가 가능하다. 단, 키에 대해서만 항목검사가 가능하다.
값은 in을 이용해 항목검사를 할 수 없다.
>>> t_dict = {'a':100, 'c':'d', 'e':'f'} >>> 'a' in t_dict # 'a'키가 존재하는지 확인 True >>> 100 in t_dict # 100이 존재하는지 확인. 값은 확인 불가 False >>> 'd' in t_dict # 'c'키의 값인 'd'도 존재하지 않는다고 나옴 False |
6. 모든 키 얻기
딕셔너리에 존재하는 모든 키와 값을 동시에 얻을 수 있다. 물론 키와 갚을 함께 얻을 수도 있다.
keys() 는 모든 키를, values()는 모든 값을, items()는 모든 키와 값을 쌍으로 리턴해 준다.
>>> t_dict.keys() dict_keys(['a', 'c', 'e']) >>> t_dict.values() dict_values([100, 'd', 'f']) >>> t_dict.items() dict_items([('a', 100), ('c', 'd'), ('e', 'f')]) |
딕셔너리는 가장 많이 사용되는 자료구조인만큼 사용법을 확실하게 익혀두는것이 좋다.
'IT' 카테고리의 다른 글
[파이썬 기초] 자료구조(5) - 기본자료구조를 이용한 복합자료구조 만들기 (0) | 2018.12.12 |
---|---|
[파이썬 기초] 자료구조(4) - 셋(set) (0) | 2018.12.10 |
[파이썬 기초] 자료구조(2) - 튜플 (0) | 2018.12.04 |
[파이썬 기초] 자료구조(1) - 리스트 (0) | 2018.11.28 |
[파이썬 기초] 파이썬 문자열(4) - 유용한 문자열 함수들 (0) | 2018.11.26 |