[Python] Set, Dictionary
Updated:
07-1. 셋
- 중복을 허용하지 않고
- 원소들의 순서가 없음 -> 인덱싱 슬라이싱 불가
- 중복을 제거하여 저장, set 에서 지원하는 여러가지 연산을 사용하기 위해 씀
set1 = { 'A', 'B', 'C', 'D', 'E', 'F' }
set1
{'A', 'B', 'C', 'D', 'E', 'F'}
set1 = { 'A', 'B', 'C', 'D', 'E', 'F', 'B' } # 중복 제거
set1
{'A', 'B', 'C', 'D', 'E', 'F'}
# 인덱싱과 슬라이싱 불가
set1[0]
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-62-0b5300ec2c3a> in <module>
1 # 인덱싱과 슬라이싱 불가
----> 2 set1[0]
TypeError: 'set' object is not subscriptable
set1[:5]
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-63-ea280228e3f8> in <module>
----> 1 set1[:5]
TypeError: 'set' object is not subscriptable
set1.add('a')
set1
{'A', 'B', 'C', 'D', 'E', 'F', 'a'}
set1.add('A')
set1
{'A', 'B', 'C', 'D', 'E', 'F', 'a'}
# remove() / pop() : 셋의 지정된 원소 / 임의의 원소를 하나 가져온 후 삭제
set1.remove('a')
set1
{'A', 'B', 'C', 'D', 'E', 'F'}
set1.pop() # set은 index가 없다 임의의 원소를 하나 가져온 후 삭제
set1
{'A', 'B', 'C', 'E', 'F'}
07-2. 셋의 집합연산
- 교집합, 합집합, 차집합 등의 집합 연산자 및 연산 함수 기능
set1 = { 'A', 'B', 'C', 'D', 'E', 'F' }
set2 = { 'B', 'D', 'G', 'H' }
# 교집합 연산
# & / intersection()
set1 & set2
{'B', 'D'}
set1.intersection(set2)
{'B', 'D'}
# 합집합 연산
# | / union()
set1 | set2
{'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'}
set1.union(set2)
{'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'}
# 차집합 연산
# - / difference()
set1 - set2
{'A', 'C', 'E', 'F'}
set1.difference(set2)
{'A', 'C', 'E', 'F'}
# 대칭 차집합 연산 : 둘 중 한 집합에는 속하지만 둘 모두에는 속하지는 않는 원소들의 집합
# ^ / symmetric_difference()
set1 ^ set2
{'A', 'C', 'E', 'F', 'G', 'H'}
set1.symmetric_difference(set2)
{'A', 'C', 'E', 'F', 'G', 'H'}
07-3. 딕셔너리
- 딕셔너리에서 Key는 고유한 값이므로 중복되는 Key 값을 설정해 놓으면 하나를 제외한 나머지 것들이 모두 무시
- Key에 리스트는 쓸 수 없지만 튜플은 Key로 쓸 수 있음
딕셔너리 변수 = {
key1 : value1,
key2 : value2,
...
}
중간고사 = {
"수학" : 100,
"영어" : 90,
}
# type(중간고사)
중간고사
{'수학': 100, '영어': 90}
# 원소 추가
중간고사['국어'] = 85
중간고사
{'수학': 100, '영어': 90, '국어': 85}
# 원소 확인 및 변경
중간고사['영어']
90
중간고사['영어'] = 95
중간고사
{'수학': 100, '영어': 95, '국어': 85}
# keys() : 딕셔너리 a의 Key만을 모아서 dict_keys 객체로 반환
list(중간고사.keys())
# 중간고사.keys()
['수학', '영어', '국어']
# values()
list(중간고사.values())
[100, 95, 85]
# items() : key-values를 쌍으로 추출할 때
# Key와 Value의 쌍을 튜플로 묶은 값을 dict_items 객체를 반환
중간고사.items()
dict_items([('수학', 100), ('영어', 95), ('국어', 85)])
# 원소 삭제
# 딕셔너리 인덱스 지원 x
# 인덱스 값이 아닌 키값을 이용하여 키 값에 해당하는 value에 접근
중간고사.pop('국어')
85
중간고사
{'수학': 100, '영어': 95}
Leave a comment