Set 과 Dictionary 의 차이 요약
1. set은 key값만 있지만 dictionary는 key,value 값이 있다.
2. dictionary는 key값은 immutalbe(변경할 수 없는) 형식이어야하고, value값은 mutable(변경가능) 형식도 가능하다.
3. set은 가변(mutable) 리스트형임.
List와 마찬가지로 여러 타입의 element들을 저장할 수 있다.
요소들이 순서대로 저장되어 있지 않아 indexing이 존재하지 않는다.
순서대로 저장되어 있지 않아 for문에서 읽어들일때 무작위 순서로 나온다.
동일한 값의 요소가 1개 이상 존재할 수 없다.
새로 저장하려는 값이 포함 되어있는 값이라면 새로운 요소가 이 전 요소를 치환한다.
set을 생성하는 법
{ }
사용set()
함수 사용set = {12, 23, 31} # 변수를 set으로 지정할 때
set2 = set([12, 23, 31]) # set() 함수 사용
set()
함수를 사용해서 set
을 만들기 위해서는 list
를 parameter
로 전달해야 하는데, 일반적으로 list
를 set
으로 변환하고 싶을때 사용한다.
ex) 중복된 값을 삭제할 때
set1 = {10, 20, 30, 30}
print(set1)
# output
{10, 20, 30}
set2 = set([10, 20, 30, 30])
print(set2)
# output
{10, 20, 30}
add()
요소 추가my_set = {10, 20, 30}
my_set.add(40)
print(my_set)
# output
{10, 20, 30, 40}
remove()
요소 삭제my_set = {10, 20, 30}
my_set.remove(10)
print(my_set)
# output
{20, 30}
set
에 어떠한 값이 포함되어 있는지 알아보는 함수
set
에서 lookup
을 사용하기 위해서는 in
, not in
키워드를 같이 사용해야 한다.
my_set = {10, 20, 30}
if 20 in my_set:
print("20 여기 있어!")
# output
20 여기 있어!
my_set = {10, 20, 30}
if 40 not in my_set:
print("여기 40은 없어")
# output
40은 여기 없어
&
키워드 혹은 intersection
함수를 사용
set1 = {3, 4, 9, 1, 4, 2, 5, 6, 7, 8, 10}
set2 = {5, 6, 7, 8, 9, 10}
print(set1 & set2)
# output
{5, 6, 7, 8, 9, 10}
|
키워드 혹은 union
함수를 사용
set1 = {3, 4, 9, 1, 4, 2, 5, 6, 7, 8, 10}
set2 = {5, 6, 7, 8, 9, 10}
# '|' 키워드 사용시
print(set1 | set2)
# 'union' 함수 사용시
print(set1.union(set2))
# output
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
한 세트의 데이터를 적절하게 저장하려면 어떻게 해야할까?
my_list = ["고양이", "코리안숏헤어", "노트북", "맥북", "핸드폰", "아이폰"]
list
로 저장한다면 이렇게 밖에 저장하지 못할 것이다.
'고양이'와 '코리안숏헤어'를 한 세트로 묶을 수 있는 자료구조가 바로 Dictionary이다.
중괄호 { }
를 사용해 dictionary를 선언한다.
key
와 value
의 값으로 이루어져 있고 key값 : value 값
이 나온다.
각각의 key : value
들은 comma 로 구분한다.
Key는 String 뿐만이 아니라 숫자도 가능하다.
Key값은 중복될 수 없다.
이미 존재하는 key값이 또 추가 되면 기존의 key값의 요소를 치환한다.
my_dict = { "key1" : "value1", "key2" : "value2"}
"고양이" : "코리안숏헤어", "노트북" : "맥북", "핸드폰" : "아이폰"
위의 세트는 Dictionary의 형태는 이렇게 적으면 된다.
my_dict = {"고양이" : "코리안숏헤어", "노트북" : "맥북", "핸드폰" : "아이폰"}
Dictionary에서 element를 읽어 들이는 법은 list와 유사하다.
list는 index
값을 사용하는 반면 dictionary는 key
값을 사용한다.
예를 들어, 앞서 선언한 my_dict
에서 key값인 "고양이"를
읽어 들이고 싶을 때 my_dict["고양이"]
를 작성한다.
my_dict["책"] = "점프 투 파이썬"
print(my_dict)
{"고양이" : "코리안숏헤어", "노트북" : "맥북", "핸드폰" : "아이폰", "책" : "점프 투 파이선"}
my_dict[ "newKey" ] = "newValue"
처럼 사용하면 된다.
요소 수정이 list와 유사하다. 차이점은 index가 아니라 key값을 사용 한다는 점.
my_dict = {"고양이" : "코리안숏헤어", "노트북" : "맥북", "핸드폰" : "아이폰", "책" : "점프 투 파이선"}
my_dict["핸드폰"] = "아이폰12proMax"
print(my_dict)
# output
{"고양이": "코리안숏헤어", "노트북": "맥북", "핸드폰": "아이폰12proMax"}
처음부터 비어있는 dictionary를 만든 다음 하나 하나씩 추가하는 것도 가능하다.
my_dict = {}
my_dict[Key] = Value
my_dict[Key2] = Value2
print(my_dict)
# output
{ "Key" : "Value", "Key" : "Value2"}
요소 삭제 또한 list와 유사하다. del 변수[Key] 차이점은 index가 아니라 key값을 사용 한다는 점.
my_dict = {"고양이" : "코리안숏헤어", "노트북" : "맥북", "핸드폰" : "아이폰"}
del my_dict["노트북"]
print(my_dict)
# output
{'고양이': '코리안숏헤어', '핸드폰': '아이폰'}