2026. 4. 29. 01:42ㆍAI/Python
이번 시간에는 나머지 콜렉션 타입인 튜플, 세트, 딕셔너리에 대해 공부해보자 😘
튜플(Tuple)
리스트와 같이 여러 데이터 타입을 저장할 수 있는 형태이지만, 변경 불가능하고
순서가 있는 컬렉션 타입이다. () 괄호를 이용하여 생성하고 , 쉼표로 구분한다.
먼저 빈 튜플을 만드는 경우부터 살펴보자.
tu1 = () # 값이 없는 튜플이지만, 이렇게 만드는 경우는 거의 없음. 변경 불가능하기 때문이다.
튜플을 만들 때 주의사항은 요소가 하나일 경우, 쉼표 ,를 명시적으로 찍어주어야 한다는 것이다.
tu1 = (10) # 튜플이 아니라 연산자 우선순위 ()로 인식
tu1 = (10,) #데이터가 1개인 튜플은 ,를 명시적으로 찍어준다.
List처럼, ()를 사용하여 튜플에 할당하는 경우와 다른 컬렉션 타입을 tuple로 타입 변환해주는 함수를 이용하는 방법이 있다.
tu2 = (1, 3, 5, 7)
tu3 = tuple([1, 3, 5, 7])
튜플에서는 패킹과 언패킹이 가능한데 , 쉼표로 구분하여 패킹할 수 있고, 변수를 여러번 선언해 언패킹 할 수 있다.
tu4 = 1, 3, 5, 7 #패킹
result1, result2, result3, result4 = tu4 #언패킹
튜플도 인덱싱과 슬라이싱이 가능하다. 방식은 리스트에서 쓰던 방식과 똑같다.
하지만, 요소의 변경은 지원하지 않는다.
tu5 = ('apple', 'banana', ('🍎', '🍌'))
print(tu5) # ('apple', 'banana', ('🍎', '🍌'))
print(type(tu5)) # tuple
print(tu5[0]) # apple
print(type(tu5[0])) # str
print(tu5[2][0]) # 🍎
튜플은 정렬할 때, sort() 메소드를 지원하지 않으므로, sorted() 함수를 이용해야 한다.
tu9 = (10, 30, 100, 90, 50)
result = sorted(tu9, reverse=True) # 결과가 항상 리스트로 나온다.
result = tuple(result)
print(result) # (10, 30, 100, 90, 50)
세트(Set)
세트는 중복되지 않는 항목들의 순서가 없는 (인덱싱이 되지 않는) 컬렉션 타입이다.
중괄호 {}를 사용하여 생성하거나, set() 생성자를 이용한다.
세트를 만드는 방법에 대해 알아보자.
s1 = {1, 3, 5, 7}
s2 = {} # 비어있는 딕셔너리가 된다.
s2 = set(s2)
세트의 특징은 중복 데이터를 알아서 제거해준다는 점이다. 하지만 정렬은 되지 않는다는 점은 기억해야 한다.
세트의 메소드는 다음과 같다.
# 1. 세트의 요소를 추가하는 메소드 : add()
s1.add(2)
print(s1) # {1, 2, 3, 5, 7} 실제로 순서가 있다고 생각하면 안됨!
# 2. 세트의 여러 요소를 추가하는 메소드 : update()
s1 = {1, 3, 5, 7}
s1.update([2, 4, 6, 8, 10])
print(s1)
# 3. 세트의 요소를 제거하는 메소드 but 요소가 없으면 에러 발생 : remove()
s1 = {1, 3, 5, 7}
s1.remove(3)
print(s1) # {1, 5, 7}
# 4. 세트의 요소를 제거하는 메소드 but 요소가 없어도 에러 발생 X : discard()
s1 = {1, 3, 5, 7}
s1.discard(3)
print(s1)
s1.discard(3) # 아무 말 없이 그대로 넘어감
# 5. 세트를 복사 : copy()
s2 = s1.copy() # 메모리 주소가 다르다.
print(id(s1))
print(id(s2))
# 6. 합집합 계산해서 반환하는 메소드 : union()
s3 = {10, 20, 30, 40, 50}
s4 = {30, 40, 50, 60, 70}
result1 = s3.union(s4)
print(result1)
result2 = s3 | s4
print(result2)
# 7. 교집합 계산해서 반환하는 메소드 : intersection()
result1 = s3.intersection(s4)
print(result1)
result2 = s3 & s4
print(result2)
# 8. 차집합 계산해서 반환하는 메소드 : difference()
result1 = s3.difference(s4)
print(result1)
result2 = s3 - s4
print(result2)
# 9. 대칭 차집합 계산해서 반환하는 메소드 : symmetric_difference()
result1 = s3.symmetric_difference(s4)
print(result1)
result2 = s3 ^ s4
print(result2)
딕셔너리(Dictionary)
딕셔너리는 키-값 쌍을 저장하는 순서 없고, 변경 가능한 컬렉션이다.
딕셔너리는 중괄호 {}를 사용하여 생성하고 키-값 쌍들은 쉼표 ,로 구분한다.
각 키-값 쌍은 콜론 :으로 구분된다.
딕셔너리는 다음과 같이 만든다.
dic2 = {1: '김사과', 2: '반하나', 3: '오렌지', 4: '이메론'}
딕셔너리는 키-값을 수정하거나 제거하거나 기존의 키의 값을 변경할 수 있다. 그러나 딕셔너리 키의 값은 변경 불가능한 타입이어야 한다.
예를 들어 문자열, 정수, 튜플은 딕셔너리의 키로 사용할 수 있으나 리스트는 불가능하다.
하지만 딕셔너리의 값은 어떤 타입이든 상관없다. 또한 키는 중복되어서는 안된다.
dic4 = {1:'apple'}
print(dic4)
# 없는 키에 딕셔너리에 쌍 추가하기
dic4[100] = 'banana'
print(dic4)
# 있는 키에 딕셔너리에 쌍 수정하기
dic4[100] = 'orange'
print(dic4)
dic4[50] = 'melon'
print(dic4)
# 딕셔너리 키 삭제
del dic4[100]
print(dic4)
함수와 메소드는 다음과 같다.
dic3 = {'no': 1, 'userid': 'apple', 'name': '김사과', 'hp': '010-1111-1111'}
print(dic3)
# 1. keys(): 딕셔너리의 모든 키 반환 (튜플 or 리스트로 생각하자.)
print(dic3.keys())
# 2. values(): 딕셔너리의 모든 값 반환 (튜플 or 리스트로 생각하자.)
print(dic3.values())
# 3. items(): 딕셔너리의 모든 키-값을 튜플로 반환 ([튜플,튜플,튜플] 형태)
print(dic3.items())
# 4. get(): 특정 키에 대한 값을 반환시켜줌 (만약 키가 딕셔너리에 없으면, None 반환)
# None을 치환할 수 있는 문자열을 설정할 수 있다.
# print(dic3['gender']) # Key Error
print(dic3.get('userid')) # apple
print(dic3.get('gender', '성별 모름')) # None => '성별 모름' 대체값
# 5. pop(): 특정 키에 대한 값을 제거하고, 제거된 값을 반환. 키가 없다면 에러.
temp = dic3.pop('hp')
print(dic3)
print(temp)
# 6. in : 딕셔너리에 특정 키가 있는지 확인
dic3 = {'no': 1, 'userid': 'apple', 'name': '김사과', 'hp': '010-1111-1111'}
print('hp' in dic3)
print('010-1111-1111' in dic3)'AI > Python' 카테고리의 다른 글
| Python의 기본 - 사용자 정의 함수 (7) (0) | 2026.05.14 |
|---|---|
| Python의 기본 - 제어문 (6) (0) | 2026.05.14 |
| Python의 기본 - 콜렉션 타입 중 리스트 (4) (0) | 2026.04.27 |
| Python의 기본 - 인풋 함수와 연산자 (3) (0) | 2026.04.22 |
| Python의 기본 - 문자열 (2) (0) | 2026.04.18 |