1. 세트 (set)
세트(set)는
중복되지 않는 항목들을 저장하는

순서가 없는 컬렉션이다.
중괄호 {}를 사용하여 생성하거나set() 생성자를 사용할 수 있다.

다만 비어있는 세트를 만들 때는 주의해야 한다.
{}는 빈 세트가 아니라 빈 딕셔너리(dict) 로 인식된다.

그래서 비어있는 세트를 만들고 싶다면 아래처럼 set()을 사용해야 한다.

2. 세트의 메소드
2.1 add() – 세트에 요소를 추가
s1 = {1, 3, 5, 7}
print(s1) # {1,3,5,7}
s1.add(2)
s1.add(4)
s1.add(7)
print(s1) # {1, 2, 3, 4, 5, 7}
실행 결과
{1,3,5,7}
{1, 2, 3, 4, 5, 7}
👉 헷갈리지 말아야 할 점은 set은 중복을 허용하지 않는다는 것이다.
그래서 이미 존재하는 7을 다시 추가해도 중복으로 들어가지 않는다.
또 출력 결과를 보면 정렬된 것처럼 보이기도 하지만, 원래 set은 순서를 보장하지 않는 자료형이다.
즉, 세트는 순서와 상관없이 저장되는 것이다.
2.2 update() – 여러 개의 요소를 추가
s1 = {1, 3, 5, 7}
print(s1)
s1.update([2, 4, 6, 8, 10])
print(s1)
실행 결과
{1, 3, 5, 7}
{1, 2, 3, 4, 5, 6, 7, 8, 10}
2.3 remove() – 요소가 없으면 에러가 발생함
s1 = {1, 3, 5, 7}
print(s1) # {1,3,5,7}
s1.remove(3)
print(s1) # {1,5,7}
# s1.remove(3) # KeyError: 3
실행 결과
{1, 3, 5, 7}
{1, 5, 7}
2.4 discard() – 요소가 없어도 에러가 발생하지 않음
s1 = {1, 3, 5, 7}
print(s1) # {1, 3, 5, 7}
s1.discard(3)
print(s1) # {1,5,7}
s1.discard(3)
print(s1) # {1,5,7}
실행 결과
{1, 3, 5, 7}
{1, 5, 7}
{1, 5, 7}
2.5 copy() – 세트 복사

👉 s2는 s1의 메모리 주소를 복사해 같이 참조하게 된다.
👉 따라서 s1 과 s2 의 id는 같다.

👉 반면 copy()를 사용하면 s1의 값만 복사하여 새로운 객체를 만든다.
즉, 서로 다른 메모리 주소를 참조하기 때문에 id 값도 다르게 나온다.
2.6 집합 함수
set은 수학에서 사용하는 집합과 비슷한 개념이라 집합 연산을 사용할 수 있다.
2.6.1 union() / | : 합집합을 계산하여 반환

2.6.2 intersection() / & : 교집합을 계산하여 반환

2.6.3 difference() / - : 차집합을 계산하여 반환

2.6.4 symmetric_difference() / ^ : 대등 차집합을 계산하여 반환

3. 딕셔너리 (dict)
파이썬의 딕셔너리는
키-값 쌍을 저장하는
순서 없는
변경 가능한(mutable) 컬렉션이다
중괄호 {}를 사용하여 생성하고,키-값 쌍들은 쉼표 ,로 구분된다- 각 키-값 쌍은
콜론 :으로 구분된다

👉 dict의 key는 중복이 허용되지 않는다
3.1 딕셔너리 수정하기
딕셔너리는 추가, 삭제, 수정이 가능하다.
key변경 불가능한( immutable ) 타입이어야 한다.value는 어떤 타입이든 상관 없다
immutable Type
- 문자열(str)
- 정수(int)
- 튜플 (tuple)
※ 리스트(list)는 변경 가능한 타입이므로 key로 사용할 수 없다.
dic4 = {1:'apple'}
print(dic4) # {1:'apple'}
dic4[100] = 'banana'
print(dic4) # { 1: 'apple',100:'banana'}
dic4[100] = 'orange' # 변경 / 없으면 만들었다 있다면 value 수정
print(dic4) # { 1: 'apple',100: 'orange'}
dic4[50] = 'melon'
print(dic4) # { 1: 'apple',100: 'orange', 50: 'melon'}
del dic4[100] # 삭제
print(dic4) # { 1: 'apple', 50: 'melon'}
실행 결과
{1: 'apple'}
{1: 'apple', 100: 'banana'}
{1: 'apple', 100: 'orange'}
{1: 'apple', 100: 'orange', 50: 'melon'}
{1: 'apple', 50: 'melon'}
3.2 딕셔너리 요소 추가

👉 해당 key('gender')가 존재하지 않으면 새로운 key-value 쌍이 추가된다.
3.3 딕셔너리 요소의 값 변경

👉 반대로 key가 이미 존재한다면 새로운 항목이 추가되는 것이 아니라 value가 수정된다.
4. 딕셔너리의 함수와 메서드
4.1 keys() – 딕셔너리의 모든 키를 반환

4.2 values() – 딕셔너리의 모든 value를 반환

4.3 items() – 딕셔너리의 모든 키-값을 튜플로 반환

4.4 get() – 특정 키에 대한 값을 반환 / 만약 키가 딕셔너리에 없으면 None 반환
예를 들어
dic3['userid']
이때 userid가 존재하지 않으면 에러가 발생한다.
하지만 get() 메서드를 사용하면 key가 없어도 에러 대신 None을 반환한다.
또 None 대신 기본값을 직접 설정할 수도 있다.
dic3 = {'no':1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}
print('dic3=',dic3)
print("dic3.get(‘userid’)=",dic3.get('userid')) # apple
print("dic3.get(gender)=",dic3.get('gender')) # None
print(dic3.get('gender', '성별 알수없음'))
print(dic3.get('name', '이름 알수없음'))
실행결과
dic3= {'no': 1, 'userid': 'apple', 'name': '김사과', 'hp': '010-1111-1111'}
dic3.get(‘userid’)= apple
dic3.get(gender)= None
성별 알수없음
김사과
4.5 pop()
- 특정 key를 제거하고 해당 value를 반환한다.
- 존재하지 않는 key를 삭제하면 에러가 발생한다.

4.6 in – 특정 키 존재 여부 확인
이렇게 사용하면 딕셔너리에 특정 key가 존재하는지 확인할 수 있다.
주의해야 할 점은 value가 아니라 key 기준으로 검사한다는 점이다.

👉 딕셔너리의 이 메서드들은 반복문에서 유용하게 쓰일 수 있다.
'python' 카테고리의 다른 글
| Python - 제어문-반복문 (0) | 2026.05.27 |
|---|---|
| Python - 컬렉션 - 튜플(tuple) (0) | 2026.05.26 |
| Python 제어문 – 조건문 (0) | 2026.05.26 |
| BootCamp Day03 1.1 + 0.1 == 1.2 가 False가 나오는 이유 (0) | 2026.05.24 |
| BootCamp Day03- 컴퓨터에서 음수를 표현하는 방법 (0) | 2026.05.23 |