사전 (Dictionary)
Programming/Python 2013. 3. 6. 03:58 |사전은 임의의 객체의 집합적 자료형인데, 자료의 순서를 가지지 않는다. 집합적이라는 의에서 리스트나 튜플과 동일하나, 자료의 순서를 정할 수 없는 매핑(Mapping)형이다. 시퀀스 자료형은 자료의 순서를 정할 수 있어서 정수 옵셋에 의한 인덱싱이 가능했지만, 매핑 형에서는 키(Key)를 이용해 값(Value)에 접근한다.
사전을 출력하면 어떤 순서에 의해서 입력 값들이 표현된다. 그런, 이런 순서는 고정 된 것이 아니라, 입력 값의 종류의 따라서 이러한 순서는 언제든지 바뀔 수 있다. 왜 이런 구조를 사용하느냐 하면, 키에 의한 검색 속도를 빨리하기 위해서이다.
참고적으로 전문적인 용어로 설명하면 사전은 내부적으로 해쉬(Hash) 라는 기법을 이용하여 자료를 저장한다. 이 해쉬 기법은 자료의 크기가 증가해도 빠른 속도로 자료를 찾을 수 있게 해준다.
※ 사전을 해보니까 C언어에서의 enum 자료형이 생각이 든다.
값은 임의의 객체가 될 수 있지만, 키는 변경 불가능(Immutable) 자료형이어야 한다. 예를 들어 문자열, 숫자, 튜플,은 키가 될 수 있지만 리스트, 사전은 키가 될 수 없다.
사전 객체의 메쏘드
사전 구조는 시퀀스 형인 리스트나 튜플과는 다르나, 반복적인 혹은 순차적인 처리르 위하여 때로는 이들 자료형으로 변환해야 할 필요가 있다. 이런 경우 사용되는 사전 D에 대한 주요 메쏘드는 다음과 같다.
D.keys() 사전에서 키들을 리스트로 리턴
D.values() 값들을 리스트로 리턴
D.items() (key, value) 리스트 리턴
key in D 멤버쉽 테스트, D가 key를 가지고 있으면 True
그 외의 메쏘드
D.clear() 사전 D의 모든 아이템 삭제
D.copy() 사전 복사(shallow copy)
D.get(key [, x]) 값이 존재하면 D[key], 아니면 x 리턴
D.setdefault(key [, x]) get과 같으나 값이 존재하지 않을 때, 값을 설정(D[key] = x)
D.update(b) for k in b.keys(): D[k] = b[k]
D.popitem() (키, 값) 튜플을 리턴하고 사전에서 항목을 제거한다.
D.pop(key) key 항목의 값을 리턴하고 사전에서 제거한다.
객체의 심볼 테이블
이름 공간(심볼들이 저장되는 공간)을 가지는 모든 객체는 심볼 테이블을 가진다. 어떤 객체의 심볼 테이블을 얻으려면 __dict__ 속성을 이용한다.
globals()를 사용하면 전역 영역(모듈 영역)의 심볼 테이블(사전)을 얻는다.
locals()를 사용하면 지역 영역의 심볼 테이블을 얻는다.
사전을 for 문으로 참조하기
'Programming > Python' 카테고리의 다른 글
집합 자료형 (0) | 2013.03.07 |
---|---|
사전 자료형을 이용한 전화번호부 프로그램 (0) | 2013.03.06 |
Python 스크립트를 실행파일(exe) 로 만들기 (0) | 2013.02.25 |
아으.. 삽질한 가변인자 코드 (0) | 2013.02.25 |
튜플 (Tuple) (0) | 2013.02.21 |