TIL23 - Set 代 Dictionary

Kiyong Lee·2021년 9월 4일
0

Python from wecode

목록 보기
3/6

Set 代 Dictionary

대(vs)도 영어라서 한문으로 썼다.

Set

집합자료형으로서, 집합에 관련된 것을 쉽게 처리하기 위해 만든 자료형이다.

문법은

set1 = set(1,2,3) 혹은
set1 = set(['h','e','l','l','o'])

출력했더니, 'l' 하나가 없어졌고, 순서는 실행할 때 마다 바뀌거나/안바뀌거나 뒤죽박죽이다.

여기서 우리는 두가지를 유추해볼 수 있다.

중복이 안되네? 그리고 순서가 없네?

그렇다. 이 두 가지가 set자료형의 가장 큰 특징이다.

순서가 없다는 건 무슨뜻일까?

인덱싱으로 값을 '원하는 대로' 얻을 수 없다.

리스트는 인덱스와 그에 따른 값이 정해져있어서 원하는 값을 뽑을 수 있었는데,

set은 인덱스가 계속 달라지니 원하는 값을 얻기 힘들다.

그래서 반복문을 돌릴 때 list(set1)처럼 리스트형태로 바꿔주곤 한다.

교집합

중학교 때 벤다이어그램으로 엄청난 악몽을 주었던 그 집합들의 특성을 파이썬으로 구현해보자!

교집합은 영어로 배울 때, intersection이라고 배웠다.

파이썬도 이 단어를 사용하며 기호로 쓸 땐 '&'을 사용한다.

set1,2 선언 후 교집합을 실행하려 했는데, 오류가 발생했다.

인자는 최대 1개인데, 4개가 받아졌다는 뜻이다.

set을 만들 때 가능한 인자를 보니, iterable한 인자만을 쓸 수 있었고

전체에 []를 덮었더니 unhashable이라면서 에러가 발생했다.

해쉬는 어떤 특정한 데이터에 대해 유니크한 값을 가지는 immutable한 성격을 가지는데,

리스트는 그렇지 않으니 발생한 에러이다.

그래서 내부의 리스트를 immutable한 형태로 바꿔주니 잘 출력되는 걸 확인할 수 있다.


합집합

합집합은 영어로 union으로, 파이썬에서도 그대로 사용하며 기호로는 '|' 이다.
(맹구아님)

왜 6이 두개지? 할 수 있는데 (6,)은 튜플의 표기법이다.


차집합

MSSQL에서 내기억이 맞다면 minus라고 썼는데, 여기서는 difference를 쓰며 기호로는 '-'이다.
( '-' 커엽 )


Dictionary

자바의 map처럼 key-value로 이루어져 있는 자료형이다.

{key : value} 형태로 선언

데이터 추가&수정

딕셔너리 데이터를 추가할 때, 리스트에 값을 할당하는 것처럼 하면 된다.

[ ]안에는 키 값을 넣고, 대입할 값을 우변에 넣으면 끝!

수정의 경우, 내가 마지막으로 저장한 값으로 이루어지는 걸 유의하자.

이름이 변경된 걸 확인할 수 있음


데이터 삭제

삭제는 특정 데이터 삭제 / 전체 삭제가 있는데,

특정 데이터 삭제는 del 객체명[키값] 형태를 사용한다.

'성'이라는 키와 그에 따른 값을 삭제

그리고 전체 데이터 삭제는 clear()를 이용한다.

깔끔하게 내부가 청소된 걸 볼 수 있다.

key / value 뽑기

key만 보고싶다 혹은 value만 보고싶다 혹은 둘 다 보고싶다 이런 경우도 있다.

그럴 땐, 객체명.keys() 혹은 객체명.values() / 객체명.get(key) 혹은 객체명.items()를 사용하자

키 값이 딕셔너리에 있나 조사하기

'in'을 사용한다

'이름'은 객체안에 있는 키 값이므로 True, 'name'은 없으므로 False

profile
ISTJ인 K-개발자

0개의 댓글