DEV/Python

[Python 기초] 자료형 - Dictionary & Set

베이비코더 2021. 8. 22. 19:00
반응형

사전(Dictionary) 자료형

"""
사전 자료형
키(Key)와 값(Value)의 쌍을 데이터로 가지는 자료형
- 리스트나 튜플이 값을 순차적으로 저장하는 것과 대비됨

키와 값의 쌍을 데이터로 가지며 변경 불가능한 자료형을 키로 사용할 수 있음

해시테이블(Hash Table)을 이용하므로 데이터의 조회 및 수정에 있어서 O(1) 시간에 처리
"""
# 선언
data = dict()
# 초기화
# 사전변수[key] = value
data['사과'] = 'Apple'
data['바나나'] = 'Banana'
data['코코넛'] = 'Coconut'

data2 = {
     '하나' : 1
    , '둘' : 2
    , '셋' : 3
}

print(data)
print(data2)

if '사과' in data:
    print("'사과'를 키로 가지는 데이터가 존재합니다.")
else:
    print("'사과'를 키로 가지는 데이터가 존재하지 않습니다.")

리스트나 튜플은 값을 순차적으로 저장한다는 특징이 있다.

사전 자료형은 키-값 쌍으로 데이터를 가지고 있기 때문에 변경 불가능한 값을 키로 사용할 수 있다.

 

해시테이블(Hash Table)

해시 테이블은 (Key, Value)로 데이터를 저장하는 자료구조 중 하나로 빠르게 데이터를 검색할 수 있다.

빠른 검색이 가능한 이유는 내부적으로 배열(버킷)을 사용하여 데이터를 저장하기 때문인데, 해시 테이블은 각각의 Key값에 해시함수를 적용해 배열의 고유한 index를 생성하고, 이 index를 활용해 값을 저장하거나 검색하게 된다.

# 사전 자료형 관련 함수
# Key 데이터만 담은 리스트
key_list = data.keys()
print(key_list)
# Value 데이터만 담은 리스트
value_list = data.values()
print(value_list)

#리스트 형태로 형변환
print(list(data.keys()))
print(list(data.values()))

# 리스트의 값을 하나씩 출력
for key in key_list:
    print(data[key])

 

집합(Set) 자료형

"""
집합 자료형
중복을 허용하지 않고 순서가 없으며 키가 존재하지 않고 값 데이터만 담게 된다.
    - 데이터 존재 유무를 확인할 때 효과적으로 사용
    - 리스트나 튜플처럼 인덱싱으로 값을 얻을 수 없다
    - 데이터 조회 및 수정에 있어서 O(1) 시간에 처리
리스트나 문자열을 이용해서 초기화 
    - set() 함수를 이용
중괄호 안에 각 원소를 (,)콤마를 기준으로 구분하여 삽입함으로 초기화 할 수 있음
"""
# 집합 자료형 초기화 1
data = set([1,1,2,3,4,4,5])
print(data)
# 집합 자료형 초기화 2
data = {1,1,2,3,4,4,5}
print(data)

집합 자료형은 중복되는 원소를 제거하기 때문에 data 출력 결과는 {1,2,3,4,5}가 된다.

# 집합 자료형 연산
a = set([1,2,3,4,5])
b = {3,4,5,6,7}
print(a | b) # 합집합
print(a & b) # 교집합
print(a - b) # 차집합

# 집합 자료형 관련 함수
data = set([1,2,3])
# 새로운 원소 추가
data.add(4)
print(data)
# 새로운 원소 여러개 추가
data.update([5,6,7])
print(data)
# 특정 값 원소 삭제
data.remove(6)
print(data)
반응형

'DEV > Python' 카테고리의 다른 글

[Python 기초] 표준 입출력  (0) 2021.08.23
[Python 기초] 자료형 - Tuple  (0) 2021.08.22
[Python 기초] 자료형 - 문자열  (0) 2021.08.22
[Python 기초] 자료형 - List  (0) 2021.08.22
[Python 기초] 자료형 - Number  (0) 2021.08.22