사전 자료형이란?
키(Key)와 값(value)의 쌍을 데이터로 가지는 자료형이다.
리스트나 튜플이 값을 순차적으로 저장하는 것과 대비된다.
리스트의 경우 순차적으로 저장되어 ‘몇 번째’ 원소에 접근하고자 할 때 인덱싱을 이용할 수 있었다.
사전 자료형은 키와 값의 쌍을 데이터로 가지며, 원하는 ‘변경 불가능한(immutable) 자료형’을 키로 사용할 수 있다.
키값을 이용해 각 원소의 값에 접근할 수 있다.
파이썬의 사전 자료형은 해시 테이블(hash table)을 이용하므로 데이터의 조회 및 수정에 있어서 O(1)(상수시간)의 시간에 처리할 수 있다.
키(Key) | 값(value) |
사과 | Apple |
바나나 | Banana |
코코넛 | Coconut |
‘사전'과 같이 어떠한 키값으로 접근을 했을 때 매칭되는 값을 얻고자 하는 자료구조에서 효과적으로 사용할 수 있다.
예시같은 한영사전이 있다고 가정해보자.
한글로 키값이 설정되어 있을 때 임의의 값과 맵핑되어 있는 상황에서 효과적으로 사용할 수 있다.
다른 언어에서는 해시 테이블 등으로 불린다.
dict()함수를 사용해서 초기화한다.
대괄호([])를 이용해 키값을 넣어준다.
해당 사전 객체에 특정한 키가 존재하는지 검사하기 위해서는 if문을 사용하여 사과라는 키가 존재하는지 확인할 수 있다.
특정 키 존재 여부를 검사하기 위한 상수시간이 소요되기 때문에 문자와 같은 키를 이용해서 데이터를 저장하고 관리하고자 하는 상황에서는 리스트보다 훨씬 효율적으로 데이터 조회를 빠르게 수행할 수 있다.
사전 자료형 관련 메서드
키와 값을 별도로 뽑아내기 위해 메서드를 지원한다.
- 키 데이터만 뽑아서 리스트로 이용할 때는 key() 함수를 이용한다
- 값 데이터만 뽑아서 리스트로 이용할 때는 values() 함수를 이용한다
집합 자료형
수학적으로 집합은
- 중복을 허용하지 않는다
- 순서가 없다
이러한 특징으로 집합 자료형을 흔히 어떠한 데이터가 존재하는지의 여부를 확인할 때 효과적으로 사용할 수 있다.
집합은 리스트 혹은 문자열을 이용해서 초기화할 수 있다.
이때 set() 함수를 사용한다.
중괄호{} 안에 각 원소를 콤마(,)를 기준으로 구분하여 삽입함으로써 초기화할 수 있다.
데이터의 조회 및 수정에 있어 O(1) (상수) 시간에 처리할 수 있다. (사전 자료형과 동일하다)
하나의 리스트를 set() 함수로 감싸줌으로써 집합 자료형으로 초기화할 수 있다.
중복되는 원소들은 제거된다.
중괄호에 원소를 넣어줌으로써 초기화할 수 있다.
집합 자료형의 연산
기본적인 집합 연산으로는 합집합, 교집합, 차집합 연산 등이 있다.
- 합집합: 집합 A에 속하거나 B에 속하는 원소로 이루어진 집합 (A U B)
- 교집합: 집합 A에도 속하고 B에도 속하는 원소로 이루어진 집합 (A ∩ B)
- 차집합: 집합 A의 원소 중에서에 B에 속하지 않는 원소들로 이루어진 집합 (A 一 B)
합집합은 or, 교집합은 and, 차집합은 minus 연산을 이용한다.
사전 & 집합 자료형 특징
리스트나 튜플은 순서가 있기 때문에 인덱싱을 통해 자료형의 값을 얻을 수 있다.
사전 자료형과 집합 자료형은 순서가 없기 때문에 인덱싱으로 값을 얻을 수 없다.
- 사전의 키 혹은 집합의 원소를 이용해 O(1)의 시간 복잡도로 조회한다.
- 키나 원소의 값으로는 변경 불가능한 문자열이나 튜플과 같은 객체가 사용되어야 한다.
'이코테 강의 정리' 카테고리의 다른 글
(이코테 w/ Python) 조건문 (0) | 2022.06.18 |
---|---|
(이코테 w/ Python) 기본 입출력 (1) | 2022.06.17 |
(이코테 w/ Python) 문자열과 튜플 자료형 (0) | 2022.06.15 |
(이코테 w/Python) 리스트 자료형 (0) | 2022.06.14 |
이것이 취업을 위한 코딩 테스트다 w/Python (a.k.a 이코테) 알고리즘 강의 (수 자료형) (0) | 2022.06.13 |