파이썬(Python) 자료구조 2

BG·2021년 5월 18일
0

파이썬(Python)

목록 보기
5/7
post-thumbnail

3. Dictionary

key와 value로 이루어진 자료구조이다.
리스트와 튜플은 인덱스로 접근하는 반면에 딕셔너리는 key값으로 데이터에 접근한다.

3-1. Dictionary 생성

리스트는 '[', ']' 튜플은 '(', ')' 딕셔너리는 '{', '}'를 사용한다.

dict = {"당근":"400원", "양파":"500원"}

빈 딕셔너리를 생성하고 추가해도 무방하다.

dict = {}
dict["당근"] = "400원"
dict["양파"] = "500원"

3-1-1. 요소 추가

위와 같이 리스트 처럼 append나 insert메소드를 사용하지 않고 바로바로 값을 추가할 수 있다.

그렇다면 아래와 같이 같은 key값에 두번 다른 값을 집어 넣으면 딕셔너리에는 어떤 값이 들어가 있을까?
최종적으로 입력된 300원이 당근이라는 key값에 들어가게 된다.

dict["당근"] = "400원"
dict["당근"] = "300원"

3-1-2. update

딕셔너리에 있는 값들을 일괄적으로 변경할 때는 update를 사용한다.
만약에 빈 딕셔너리에 값을 update하면 해당 값이 존재하지 않기에 add처리 된다.

dict = {"당근":"400원", "양파":"500원", "마늘":"150원"}
dict.update({"당근":"600원", "양파":"600원"})
결과 : dict = {"당근":"600원", "양파":"600원", "마늘":"150원"}

3-2. Dictionary 삭제

3-2-1. del

dict = {"당근":"400원", "양파":"500원"}에서 당근의 요소를 삭제하기 위해서는 아래와 같이 한다.

del dict["당근"]
결과 : dict = {"양파" : "500원"}

3-2-2. pop()

또 다른 삭제의 방법으로는 pop()가 있다.
pop()과 del의 차이점은 pop을 사용하여 삭제를 하면 삭제된 값이 return된다.

dict = {"당근":"400원", "양파":"500원"}
dict.pop("당근")
결과 : dict = {"양파" : "500원"}
return값 : "400원"

3-2-3. clear()

딕셔너리를 전부 삭제를 하기 위해서는 clear()을 사용하면 된다.

dict = {"당근":"400원", "양파":"500원"}
dict.clear()
결과 : dict = {}

4. Set

set은 집합에 관련된 자료들을 처리하기 위해 사용한다.
set은 순서가 없는 자료형이기 때문에, 인덱스로 접근할 수 없다.
set은 고유한 값을 가지기 때문에 중복된 값을 가질 수 없다.

4-1. Set 생성

set을 생성하는 방식은 아래와 같다.

s = set({1,2,3})
s = set([1,2,3])
s = {1,2,3}
s = set()

4-2. 요소 추가

4-2-1. add

set은 중복값을 허용하지 않기에 기존에 존재하는 값을 add해도 결과값을 보면 무시되는 것을 알수 있다.

s = {"당근", "양파"}
s.add("마늘")
s.add("당근")
결과 : s = {"당근", "양파", "마늘"}

4-2-2. update

많은 요소를 한꺼번에 add하기 위하여 update를 사용한다.
아래와 같이 update를 사용할때는 '{', '}'나 '[', ']'를 사용한다.

s = {"당근", "양파"}
s.update({1,2,3})
s.update([4,5,6])
결과 : s = {"당근", "양파", 1, 2, 3, 4, 5, 6}

4-3. Set 삭제

4-3-1. remove

remove를 사용하여 삭제를 하며 해당 set에 삭제 할려는 요소가 없으면 오류가 난다.

s = {"당근", "양파"}
s.remove("당근")
결과 : s = {"양파"}

4-3-2. discard

discard와 remove의 다른점은 remove를 사용하여 존재하지 않는 요소를 삭제하면 오류가 나지만 discard는 존재하지 않는 요소를 삭제를 해도 오류가 나지 않는다.

s = {"당근", "양파"}
s.discard("당근")
결과 : s = {"양파"}

4-3-3. pop()

pop은 임의의 요소를 제거한다.
set은 순서가 없는 자료형이라 pop을 사용하면 당근이 삭제될 수도 있고, 양파가 삭제될 수도 있다.

s = {"당근", "양파"}
s.pop()
결과 : s = {"양파"} or s = {"당근"}

4-3-4. clear()

해당 set의 모든 요소를 제거한다.

s = {"당근", "양파"}
s.clear()
결과 : s = {}

4-4. 집합

set은 앞서 말한바와 같이 집합관계에 있는 데이터들을 처리하기에 용이하다.

4-4-1. 교집합

intersection&연산자는 같은 의미를 지닌다.

s1 = {1,2,3,4,5}
s2 = {4,5,8,9,10}

s1.intersection(s2)
s1 & s2

결과 : {4,5}

4-4-2. 합집합

union|연산자는 같은 의미를 지닌다.

s1 = {1,2,3,4,5}
s2 = {4,5,8,9,10}

s1.union(s2)
s1 | s2

결과 : {1,2,3,4,5,8,9,10}

4-4-3. 차집합

difference-연산자는 같은 의미를 지닌다.
차집합은 순서가 중요하다.
순서에 따라 결과가 다르다.
아래 결과값을 참조하자.

s1 = {1,2,3,4,5}
s2 = {4,5,8,9,10}

s1.difference(s2)
s1 - s2
결과 : {1,2,3}

s2.difference(s1)
s2 - s1
결과 : {8,9,10}

4-4-4. 동일한 집한인지 체크

아래가 결과가 "동일"로 나오는 이유는 set은 정렬되지 않은 자료형이다.
그래서 요소들의 값만을 비교하며 순서는 신경쓰지 않는다.
s1,s2를 리스트로 만들어서 비교해 보면 결과값은 "다름"이 나온다.

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

if s1 == s2:
print("동일")
else:
print("다름")

결과 : "동일"

profile
글쎄...?

0개의 댓글