imhamburger 님의 블로그

파이썬(Python) - 시퀀스 자료형, 세트(Set)와 딕셔너리(dict) 본문

파이썬(Python)

파이썬(Python) - 시퀀스 자료형, 세트(Set)와 딕셔너리(dict)

imhamburger 2024. 6. 14. 00:58

세트(Set)

세트는 다음과 같은 메소드를 가진다.

add 요소 추가
remove 요소 삭제
discard 요소 삭제
pop 요소를 가져오면서 삭제 

 

그럼 remove와 discard의 차이는 뭐지?

remove는 없는 요소를 지우라고 명령할 시 Error를 발생시키지만, discard는 없는 요소여도 에러가 발생하지 않는다. (흠, 그러면 어떤 경우에 쓰일까?)

set1 = set()

set1.add(2)
set1.remove(2)
set1.discard(2) #정상작동

 세트는 index가 없기 때문에 pop을 쓰면 어떤 랜덤한 요소가 삭제되니 유의하자!

 

Set의 집합 연산

#합집합
set.union(a, b) #'|' 엔터키 위에 있는 요 막대기로 써도 된다. set(a) | set(b) 

#교집합
set.intersaction(a, b) #'&' 이것도 가능 set(a) & set(b) 

#차집합
set.difference(a, b) #set(a) - set(b)

#a가 b의 부분집합(a가 b집합에 포함되어 있는가?)
a.issubset(b)

#a가 b의 상위집합(a가 b집합을 포괄하고 있는가?)
a.issuperset(b)

#a가 b에 겹치지 않는 집합(a집합과 b집합은 서로 다른 값을 가지는가?)
a.isdisjoint(b)

 

+추가로.... b집합을 a집합에 넣고 싶다면?

a.update(b) #b값이 a에 대입이 된다.

 

딕셔너리(Dictionary)

딕셔너리는 {key : value} 형태로 갖는다.

유의해야할 것은 key값이 같은 것이 2개 이상 존재한다면, 제일 먼저 나오는 key만 출력된다.

#1과 True는 같은 값을 갖는다.
dic = {1: value1, True: value2}
print(dic)
#1: value1만 출력된다.

 

딕셔너리는 그럼 어떻게 만들지?

sample1 = dict()
sample2 = {}

#반드씨 쌍을 이루어야 한다. [1, 'value1', value2]를 넣는다면 에러가 난다.
sample3 = dict([[1, 'value1'], [2, 'value2']])

 

 

+추가로 zip이란 함수가 있다는데...

zip은 키값만 갖는 리스트, value값만 갖는 리스트를 인덱스가 같은것끼리 한 쌍으로 튜플로 만들어 준다.

zip자체로는 출력이 불가하다. 따라서 list 혹은 dict 형태로 다시 변환하여 출력해야 한다.

a = [1, 2, 3]
b = ['A', 'B', 'C']
print(list(zip(a, b)))
#출력 [(1, 'A'), (2, 'B'), (3, 'C')]

a = [1, 2, 3]
b = ['A', 'B', 'C']
print(dict(zip(a, b)))
#출력 {1: 'A', 2: 'B', 3: 'C'}