본문 바로가기

내가 만드는 개발자 교안/Python

02. 04 파이썬 기초 04 - 자료구조 02 비시퀀스 데이터 구조(세트, 딕셔너리)

728x90

비시퀀스 데이터 구조

1. 세트

세트 메서드

  1. s.add(x) : 세트에 x를 추가한다.
    이미 x가 있다면 변화가 없다.
sample = {'a', 'b', 'c', 1, 2, 3}
sample.add(4)
print(sample)   # {'c', 2, 3, 1, 'b', 'a', 4}
sample.add('a')
print(sample)   # {'c', 2, 3, 1, 'b', 'a', 4}
  1. s.clear() : 세트의 모든 항목을 제거한다.
sample = {'a', 'b', 'c', 1, 2, 3}
sample.clear()
print(sample)   # set()
  1. s.remove(x) : 세트에서 항목 x를 제거한다.
    x가 없으면 오류를 발생한다.
sample = {'a', 'b', 'c', 1, 2, 3}
sample.remove(2)
print(sample)   # {1, 3, 'b', 'c', 'a'}
sample.remove(100)
print(sample)   # KeyError: 100
  1. s.discard(x) : 세트에서 항목 x를 제거한다.
    x가 없어도 오류가 발생하지 않는다.
sample = {'a', 'b', 'c', 1, 2, 3}
sample.discard(2)
print(sample)   # {1, 3, 'b', 'c', 'a'}
sample.discard(100)
print(sample)   # {1, 3, 'b', 'c', 'a'}
  1. s.pop() : 세트에서 임의의 요소를 제거하고 반환한다.
    사실 임의의 요소가 아니라 세트내부에 저장된 변수의 메모리값을 참조해서 제거한다.
    하지만, 이 값은 세트에 요소가 저장될 때 임의로 저장되기 때문에 임의라고 볼 수 있다.
sample = {'a', 'b', 'c', 1, 2, 3}
sample.pop()
print(sample)   # {2, 'b', 3, 'c', 'a'}
  1. s.update(x) : iterable x의 모든 요소를 세트에 추가한다.
sample = {'a', 'b', 'c', 1, 2, 3}
add_set = {'d', 'e', 'f', 'g', 3, 4, 5}
sample.update(add_set)
print(sample)   # {1, 2, 3, 'c', 4, 'd', 5, 'b', 'e', 'f', 'a', 'g'}

세트의 집합 메서드

  1. s1.difference(s2) : 차집합, s1 - s2 의 값을 반환한다.
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
difference = set1.difference(set2)
print(difference)  # {1, 2, 3}
  1. s1.intersection(s2) : 교집합, s1 & s2 의 값을 반환한다.
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
intersection = set1.intersection(set2)
print(intersection)  # {4, 5}
  1. s1.issubset(s2) : 부분집합여부, s1이 s2의 부분집합인지 여부를 반환한다.
set1 = {1, 2, 3}
set2 = {1, 2, 3, 4, 5}
is_subset = set1.issubset(set2)
print(is_subset)  # True
  1. s1.issuperset(s2) : 부분집합여부, s2가 s1의 부분집합인지 여부를 반환한다.
set1 = {1, 2, 3, 4, 5}
set2 = {1, 2, 3}
is_superset = set1.issuperset(set2)
print(is_superset)  # True
  1. s1.union(s2) : 합집합, s1 | s2 의 값을 반환한다.
set1 = {1, 2, 3}
set2 = {4, 5, 6}
union = set1.union(set2)
print(union)  # {1, 2, 3, 4, 5, 6}

2. 딕셔너리

딕셔너리 메서드

  1. d.clear() : 딕셔너리의 모든 값을 제거한다.
sample = {'a': 1, 'b': 2, 'c': 3}
sample.clear()
print(sample)  # {}
  1. d.get(k) : 키 k 에 연결된 값을 반환한다.
    키가 없으면 None을 반환한다.
sample = {'a': 1, 'b': 2, 'c': 3}
print(sample.get('b'))  # 2
print(sample.get('d'))  # None
  1. d.get(k, v) : 키 k 에 연결된 값을 반환한다.
    키가 없으면 v를 반한한다.
sample = {'a': 1, 'b': 2, 'c': 3}
print(sample.get('b', 0))  # 2
print(sample.get('d', 0))  # 0
  1. d.keys() : 딕셔너리의 모든 키 들을 반환한다
sample = {'a': 1, 'b': 2, 'c': 3}
print(sample.keys())  # dict_keys(['a', 'b', 'c'])
  1. d.items() : 딕셔너리의 모든 키/값 쌍을 반환한다.
sample = {'a': 1, 'b': 2, 'c': 3}
print(sample.items())  # dict_items([('a', 1), ('b', 2), ('c', 3)])
  1. d.pop(k) : 딕셔너리에서 키 k를 제거하고 연결되어있던 모든 값을 반환한다.
    키 k 가 없으면 오류를 발생한다.
sample = {'a': 1, 'b': 2, 'c': 3}
value = sample.pop('b')
print(value, sample)  # 2 {'a': 1, 'c': 3}
sample.pop('d')  # KeyError: 'd'
  1. d.pop(k, v) : 딕셔너리에서 키 k를 제거하고 연결되어있던 모든 값을 반환한다.
    키 k 가 없으면 v를 반환한다.
sample = {'a': 1, 'b': 2, 'c': 3}
value = sample.pop('b', 0)
print(value, sample)  # 2 {'a': 1, 'c': 3}
value = sample.pop('d', 0)
print(value, sample)  # 0 {'a': 1, 'c': 3}
  1. d.setdefault(k) : 키 k 와 연결된 값을 반환한다.
sample = {'a': 1, 'b': 2, 'c': 3}
print(sample.setdefault('b'))  # 2
print(sample)  # {'a': 1, 'b': 2, 'c': 3}
  1. d.setdefault(k, v) : 키 k와 연결된 값을 반환한다.
    키 k가 딕셔너리에 없으면 새로운 키 k와 값 v를 연결하여 딕셔너리에 추가하고 v를 반환한다.
sample = {'a': 1, 'b': 2, 'c': 3}
print(sample.setdefault('d', 4))  # 4
print(sample)  # {'a': 1, 'b': 2, 'c': 3, 'd': 4}
  1. d1.update(d2) : d2의 키들에 대해서 d1에 있는 키이면 그 키의 값을 모두 d2의 값으로 대체하고, d1에 없는 키이면 그 키에 대한 d2의 키/값 쌍을 d1에 추가한다.
sample1 = {'a': 1, 'b': 2}
sample2 = {'b': 3, 'c': 4}
sample1.update(sample2)
print(sample1)  # {'a': 1, 'b': 3, 'c': 4}
반응형