본문 바로가기
2학년 2학기/데이터 사이언스 입문

컬렉션 - Dict, Set

by kkkkk1023 2024. 9. 19.

Dictionary

: key, value를 쌍으로 이루는 데이터 콜렉션 타입

 

# 기본 형태
person = dic()
person['kim'] = 1
person['park'] = 2

# 또는

person = {'kim': 1, 'park': 2}

 

[딕셔너리 내 원소 접근]

 

person = {'kim': 1, 'park': 2}
print(person['kim']) # 1

 

 

[딕셔너리의 자료 존재 여부 검사]

person = {'kim': 1, 'park': 2}
print('kim' in person) #True
print('choi' in person) #False

 

 

[딕셔너리 내장 메소드]

다음은 파이썬 딕셔너리 내장 메소드의 정리이다.

1. `keys()`  
   딕셔너리의 모든 키를 반환한다.

2. `values()`  
   딕셔너리의 모든 값을 반환한다.

3. `items()`  
   딕셔너리의 모든 키-값 쌍을 튜플 형태로 반환한다.

4. `get(key, default=None)`  
   키에 해당하는 값을 반환하며, 키가 없을 경우 `None` 또는 지정한 기본값을 반환한다.

5. `update([other])`  
   다른 딕셔너리나 키-값 쌍을 추가하거나 덮어쓴다.

6. `pop(key, default=None)`  
   키에 해당하는 값을 제거하고 반환하며, 키가 없으면 `None` 또는 지정한 기본값을 반환한다.

7. `popitem()`  
   마지막 키-값 쌍을 제거하고 튜플로 반환하며, 딕셔너리가 비어 있을 경우 `KeyError`가 발생한다.

8. `clear()`  
   딕셔너리의 모든 항목을 제거한다.

9. `copy()`  
   딕셔너리의 얕은 복사본을 반환한다.

10. `setdefault(key, default=None)`  
   키가 존재하면 그 값을 반환하고, 키가 없으면 기본값을 추가한 후 반환한다.

11. `fromkeys(iterable, value=None)`  
   주어진 iterable의 항목을 키로 하여 딕셔너리를 생성하고, 모든 값은 지정된 값(기본값은 `None`)으로 설정한다.

 


Set

: 순서가 없고, 중복을 허용하지 않는 데이터 콜렉션 타입

# 기본 형태
s1 = set()

#또는

s2 = {3, 3, 4, 4, 5}

 

순서가 없기 때문에 인덱스로 접근하는 건 불가능하다.

 

[List로 Set 생성]

s1 = set([1, 2, 2, 1])
print(s1) # {1, 2}

 

 

[문자열로 Set 생성]

s2 = set('school')
print(s2) # {'s', 'c', 'o', 'h', 'l'}

 

[Set끼리 연산]

 

1. 합집합

 

s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}

s1 | s2 # {1, 2, 3, 4, 5, 6, 7}

 

2. 교집합

 

s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}

s1 & s2 # {3, 4, 5}

 

3. 차집합

 

s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}

s1 - s2 # {1, 2}

 

[Set 내장 메소드]

 

 

add(x)
집합에 항목 x를 추가한다. 이미 존재하는 경우 아무 작업도 하지 않는다.

 

remove(x)
집합에서 항목 x를 제거한다. 해당 항목이 없으면 KeyError가 발생한다.

 

discard(x)
집합에서 항목 x를 제거한다. 해당 항목이 없어도 에러가 발생하지 않는다.

 

pop()
집합에서 임의의 항목을 제거하고 반환한다. 집합이 비어 있을 경우 KeyError가 발생한다.

 

clear()
집합의 모든 항목을 제거한다.

 

copy()
집합의 얕은 복사본을 반환한다.

 

union(*others)
다른 집합들과의 합집합을 반환한다.

 

intersection(*others)
다른 집합들과의 교집합을 반환한다.

 

difference(*others)
다른 집합들과의 차집합을 반환한다.

 

symmetric_difference(other)
두 집합 간의 대칭 차집합을 반환한다.

 

issubset(other)
해당 집합이 다른 집합의 부분 집합인지 확인하여 True 또는 False를 반환한다.

 

issuperset(other)
해당 집합이 다른 집합의 상위 집합인지 확인하여 True 또는 False를 반환한다.

 

isdisjoint(other)
두 집합이 서로 공통 항목이 없는지 확인하여 True 또는 False를 반환한다.

 

update(*others)
다른 집합들과의 합집합으로 집합을 갱신한다.

 

intersection_update(*others)
다른 집합들과의 교집합으로 집합을 갱신한다.

 

difference_update(*others)
다른 집합들과의 차집합으로 집합을 갱신한다.

 

symmetric_difference_update(other)
두 집합 간의 대칭 차집합으로 집합을 갱신한다.