[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