가변객체와_불변객체
Dictionary 🌕:🌒 에 이어서
list 자료형에 이어서
List는 계속 수정이 가능하다. (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}
my_set = {10, 20, 30}
my_set.add(40)
print(my_set)
# output
{10, 20, 30, 40}
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}
List와 같이 요소들을 저장할때 쓰인다.
Tuple은 한번 선언되면 수정이 불가능하다. (immutable)
일반 괄호를 사용한다.
Indexing과 Slicing은 List와 같다.
List와 같이 데이터를 저장할때, List보다 용량이 적다.
수정이 필요없고 간단한 형태의 데이터를 표현할때에는 Tuple을 사용하는 것이 좋다.
tuple
을 생성하는 법
( )
사용my_tuple = (10, 20, 30)
list
와 동일하다.
my_tuple[0]
, my_tuple[2]
Tuple은 일반적으로 2개에서 5개 사이의 요소들을 저장할때 사용되는데,
특정 데이터를 ad hoc
하게 표현하고 싶을때 사용된다.
예를 들어, 다음의 A, B, C, D의 위치 값을 표현할 때
A = (4, 4)
B = (5, -2)
C = (2, -2)
D = (-3, -2)
이러한 데이터들을 표현할때는 tuple
을 사용하는게 좋다.
tuple
은 주로 list
와 함께 사용되는데,
수정이 필요없는 위와 같은 데이터들을 list
와 함께 사용할때
coords = [(4, 4), (5, -2), (2, -2), (-3, -2)]
# list의 요소로 tuple 사용
coords = [ [4, 4], [5, -2], [2, -2], [-3, -2] ]
# list로 동일한 데이터 표현
list
보다는 tuple
이 더 효과적이다.
한 세트의 데이터를 적절하게 저장하려면 어떻게 해야할까?
my_list = ["고양이", "코리안숏헤어", "노트북", "맥북", "핸드폰", "아이폰"]
list
로 저장한다면 이렇게 밖에 저장하지 못할 것이다.
'고양이'와 '코리안숏헤어'를 한 세트로 묶을 수 있는 자료구조가 바로 Dictionary
이다.
중괄호 { }
를 사용해 dictionary를 선언한다.
key
와 value
의 값으로 이루어져 있고 key값 : value 값이 나온다.
각각의 key : value
들은 comma 로 구분한다.
Key는 String 뿐만이 아니라 숫자도 가능하다.
Key값은 중복될 수 없다.
이미 존재하는 key값이 또 추가 되면 기존의 key값의 요소를 치환한다.
my_dict = { 1 : "one", 1 : "two"}
print(my_dict)
# output
{ 1 : "two" }
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
{'고양이': '코리안숏헤어', '핸드폰': '아이폰'}