셋은 값(value)를 버리고 키(key)만 있는 딕셔너리와 같습니다.
마찬가지로 키는 유일해야 합니다.
존재하는지 여부만 판단할때 셋을 사용합니다.
키에 어떤 정보를 첨부해서 그 결과를 얻고 싶을땐 딕셔너리를 사용합니다.
셋 생성: set(), { , , }
empty_set1=set()
# empty_set2={} ==> 이건 빈 딕셔너리를 의미한다! 빈 셋이 아님
set1={1,2,3}
print(set1) #출력: {1, 2, 3}
딕셔너리의 키와 마찬가지로 셋은 순서가 없다!
데이터 타입 변환: set()
리스트,문자열,튜플,딕셔너리로부터 중복된 값을 버린 셋을 생성할 수 있습니다.
리스트->셋
list=['aaa','bbb','ccc','aaa']
set_test=set(list)
print(set_test) #출력: {'ccc', 'bbb', 'aaa'}
문자열->셋
string='letters'
set_test=set(string)
print(set_test) #출력: {'s', 'l', 't', 'e', 'r'}
튜플->셋
tuple=('aaa','bbb','ccc','aaa')
set_test=set(tuple)
print(set_test) #출력: {'bbb', 'ccc', 'aaa'}
딕셔너리->셋
dict_test={'a':'hello', 'b':'world', 'c':'!!!!'}
set_test=set(dict_test)
print(set_test) #출력: {'a', 'c', 'b'}
in 활용
drinks={
'martini': {'vodka','vermouth'},
'black russian': {'vodka','kahlua'},
'white russian': {'cream','kahlua','vodka'},
'manhattan': {'rye','vermouth','bitters'},
'screwdirver': {'orange juice','vodka'}
}
for name,contents in drinks.items():
if 'vodka' in contents:
print(name)
"""
출력:
martini
black russian
white russian
screwdirver
"""
셋을 집합으로 활용
a={1,2}
b={2,3}
#----인터섹션(교집합)----#
print(a&b) #출력:{2}
print(a.intersection(b)) #출력:{2}
#----유니온(합집합)----#
print(a|b) #출력:{1, 2, 3}
print(a.union(b)) #출력:{1, 2, 3}
#----디퍼런스(차집합)----#
print(a-b) #출력:{1}
print(a.difference(b)) #출력:{1}
#----익스클루시브(대칭 차집합:한 쪽 셋에는 들어 있지만 양쪽 모두에 들어 있지 않은)----#
print(a^b) #출력:{1, 3}
print(a.symmetric_difference(b)) #출력:{1, 3}
#----서브셋(부분집합)----# #a가 b의 부분집합인가?
print(a<=b) #출력:False
print(a.issubset(b)) #출력:False
#----프로퍼 서브셋(진부분집합)----#
print(a<b) #출력:False
#----슈퍼셋(서브셋의 반대)----#
print(a>=b) #출력:False
print(a>=a) #출력:True
drinks={
'martini': {'vodka','vermouth'},
'black russian': {'vodka','kahlua'},
'white russian': {'cream','kahlua','vodka'},
'manhattan': {'rye','vermouth','bitters'},
'screwdirver': {'orange juice','vodka'}
}
for name,contents in drinks.items():
if 'vodka' in contents and not contents & {'vermouth','cream'}: #교집합 활용
print(name)
"""
출력:
black russian
screwdirver
"""
'Python' 카테고리의 다른 글
[Python] 여러 시퀀스 순회하기: zip() (0) | 2022.09.23 |
---|---|
[Python] 라인 유지하기: \ (0) | 2022.09.23 |
[Python] 딕셔너리(딕트) (0) | 2022.09.09 |
[Python] 튜플(tuple) (0) | 2022.09.09 |
[Python] 리스트(List) (0) | 2022.09.08 |