본문 바로가기

코딩

[Python] 복합 자료형 (dictionary, set)

1. 복합 자료형

파이썬의 복합 자료형은 4가지다.

단, 이전 게시물에서 list와 tuple을 다뤘으므로 본 게시물에서는 dictionaryset을 다루고자 한다.

 

▪️ 리스트

▪️ 튜플

▪️ 딕셔너리

▪️ 세트

 

 

2. 딕셔너리 (Dictionary)

딕셔너리는 Key와 Value의 쌍으로 이루어진 자료형이다.

시퀀스 자료형이 아니므로 순서가 없고, 따라서 인덱싱이 불가능하다.

작업 내용 코드 결과
딕셔너리 생성 ① a = {}
② a = {'name' : 'Kim', 'age' : 25}
① a = {}
② a = {'name' : 'Kim', 'age' : 25}
요소 추가 a['home'] = 'Seoul' a = {'name' : 'Kim', 'age' : 25, 'home' : 'Seoul' }
요소 삭제 del a['home'] a = {'name' : 'Kim', 'age' : 25}
요소 수정 a['name'] = 'Park' a = {'name' : 'Park', 'age' : 25}
Key 추출 a.keys() dict_keys(['name', 'age'])
Value 추출 a.values() dict_values(['Park', 25])
Key, Value 함께 추출 a.items() dict_items([('name', 'Park'), ('age', 25)])

 

*딕셔너리 특징

특징 예시 / 코드 결과
딕셔너리의 Key에는 리스트가 들어갈 수 없음 (튜플은 가능) a = {(1, 3, 4) : 'Kim', 5 : 25}  
딕셔너리의 인덱싱을 위해서는 리스트화해야 함 (ex. Key) b = list(a.keys())[0] b = (1, 3, 4)
딕셔너리의 인덱싱을 위해서는 리스트화해야 함 (ex. Key, Value) for x, y in a.items():
     print(x, y)
(1, 3, 4) Kim
5 25

 

 

3. 세트 (Set)

세트는 딕셔너리와 같이 {}를 이용하지만 요소가 쌍이 아닌 자료형으로, 수학 '집합'의 개념을 생각하면 된다.

딕셔너리와 동일하게 순서가 없어 인덱싱이 불가능하며, 출력시 순서가 계속해서 바뀌어 나타난다.

더불어 세트는 중복 원소를 갖지 않는다.

작업 내용 코드 결과
세트 생성 ① a = set()
② a = {'a', 'b', 4, 9}
③ b = set(['A', 'B', 4])
① a ={}
② a = {'a', 'b', 4, 9}
③ b = {'A', 'B', 4}
요소 추가 a.add(33) a = {'a', 33, 'b', 4, 9}
요소 삭제 (요소 없으면 에러) a.remove(33) a = {'a', 'b', 4, 9}
요소 삭제 (요소 없어도 에러X) a.discard(33) a = {'a', 'b', 4, 9}
요소 전체 삭제 a.clear() a = {}
요소 확인 (output) 'a' in a True
세트 교집합 c = a & b c = {4}
세트 합집합 c = a | b c = {'a', 'b', 4, 9, 'A', 'B'}
세트 차집합 c = a - b c = {'a', 'b', 9}

 

*세트 특징

특징 예시 / 코드 결과
세트 생성시 a = {} 를 하면 딕셔너리로 생성되므로 주의해야 함    
세트 안에 세트를 넣을 수 없음    
리스트의 중복값을 제거할 때 세트로 전환했다가 다시 리스트로 전환하면 됨 a = [1, 1, 3, 5]
a2 = list(set(a))
a = [1, 3, 5]
문자열의 중복값을 제거할 때 세트로 전환했다가 다시 리스트로 전환하면 됨 a = "AAABCC"
a2 = "".join(set(a))
a2 = "ACB"