Programming/Python
[Python] Python 기초 (4) - 튜플, 집합, 딕셔너리 자료형
Boxya
2025. 3. 29. 14:57
[KT] AIVLE SCHOOL 2일차
튜플(Tuple)
- 튜플은 소괄호( () )를 사용해서 표현
- 리스트와 정말 비슷한 자료형이지만 다음과 같은 차이점이 있음
- 튜플은 한 번 만들면 요소의 값을 바꿀 수 없다.
- 리스트에서는 대괄호를 생략할 수 없지만 튜플에서는 괄호를 생략할 수 있다
- e.g. score1 = (90, 85, 70) / score1 = 90, 85, 70
- 튜플 만들기
- 빈 튜플
- score = () / score = tuple()
- 요소가 하나인 튜플
- 요소가 하나인 튜플을 만들 때는 주의해야함
- score = (90) X : int 자료형이 된다.
- 요소가 하나인 튜플은 콤마(,)를 추가해서 만들어야 함
- score = (90,) O
- 외에 다양한 형태, range() 함수를 활용, 문자열로 만드는 경우는 리스트의 경우와 같다.
- 빈 튜플
- 관련 메서드
- index() : 지정한 값이 있는 요소의 위치 반환, 같은 요소가 없으면 에러
- count() : 리스트 안에 지정한 요소가 몇 개 있는지 개수 반환, 없으면 0
집합(Set)
- 집합 연산(교집합, 합집합, 차집합, 대칭 차집합)을 위한 자료형
- 중복을 허용하지 않아 중복된 원소는 하나만 제외하고 모두 무시됨
- 원소의 순서가 의미가 없으므로 인덱싱과 슬라이싱으로 값을 얻을 수 없음
- 집합은 중괄호( {} )를 사용해서 선언함
- set() 함수를 사용해 다른 자료형을 집합으로 변환 가능 (요소의 순서가 없어 변환 후의 요소 순서를 알 수 없음)
- 문자열, 리스트, 튜플 등을 집합으로 변환 가능하며 range() 함수를 사용할 수도 있다.
- 변환 시 중복된 값은 제거된다.
- 합집합 : '|' 또는 union() 메서드 사용 e.g. set1 | set2 / set1.union(set2)
- 교집합 : '&' 또는 intersection 메서드 사용 e.g. set1 & set2 / set1.intersection(set2)
- 차집합 : '-' 또는 difference 메서드 사용 e.g. set1 - set2 / set1.difference(set2)
- 대칭 차집합 : '^' 또는 symmetric_difference 메서드 사용 e.g. set1 ^ set2 / set1.symmetric_difference(set2)
- 집합 관련 메서드
- add : 집합에 원소 하나를 추가 e.g. set1.add(10)
- clear : 집합에서 모든 원소 제거 e.g. set1.clear()
- discard : 집합에서 특정 원소 제거, 지정된 원소를 찾지 못하면 무시 e.g. set1.discard(10)
- pop : 집합에 무작위로 원소 하나를 제거 e.g. set1.pop()
- remove : 집합에서 특정 원소 제거, 지정한 원소를 찾지 못하면 오류 발생 e.g. set1.remove(1)
- update : 집합에 여러 원소(리스트, 튜플, 딕셔너리)를 추가 e.g. set1.update(['한국인', '나도야'])
딕셔너리(Dictionary)
- 딕셔너리는 집합과 마찬가지로 중괄호( {} )를 이용하여 선언
- 하지만 {Key1: Value1, Key2: Value2, Key3: Value3}의 형태를 가지므로 집합과 구분됨
- 딕셔너리는 순서의 의미가 없으며, 키(Key)를 사용해 값(Value)을 확인
- 참고: 딕셔너리는 Python 3.6 이전 버전까지 정렬되지 않은 자료 구조로 간주. 이후부터 순서를 유지
- 딕셔너리 생성
- word = {'love': '사랑', 'happy': '행복', 'dream': '꿈'} 와 같이 Key: Value 형태로 선언
- print(word['love']) 의 출력결과 : 사랑
- Key를 사용해 Value를 조회한다.
- in 연산자를 사용해 해당 Key가 있는지 확인 가능하다.
- 다양한 자료형을 요소로 가질 수 있으며 리스트나 튜플을 Value로 가질 수도 있다.
- 만약 Key가 같은 요소가 있으면 하나만 남기고 나머지는 무시된다.
- dict() 함수를 이용하여 리스트 안의 리스트나 튜플, 튜플 안의 리스트나 튜플 값을 딕셔너리로 변환이 가능하다.
- word = {'love': '사랑', 'happy': '행복', 'dream': '꿈'} 와 같이 Key: Value 형태로 선언
- 딕셔너리 변경, 삭제, 추가
- 딕셔너리 요소 값 변경 : Key로 요소 값을 찾아 변경 가능 e.g. member['나이'] = 30
- 없는 Key로 변경하면 Key:Value 형태로 요소가 추가됨
- 딕셔너리 요소 삭제
- del 문으로 Key를 지정해 해당 요소 삭제 e.g. del member['나이']
- pop() 메서드를 사용하여 Key를 지정해 요소를 삭제, 삭제된 요소의 Value를 반환
- e.g. member.pop('나이')
- popitem() 메서드로 Key 지정 없이 마지막 요소부터 삭제, 삭제된 요소의 Key, Value를 튜플 형태로 반환
- del_member = member.popitem()
- 모든 요소 삭제는 딕셔너리 = {} 형태로 수행 / member = {}
- 딕셔너리 요소 값 변경 : Key로 요소 값을 찾아 변경 가능 e.g. member['나이'] = 30
- 딕셔너리 관련 메서드
- keys() : Key 정보 확인, 모든 Key를 요소로 갖는 dict_keys 개체 반환
- values() : Value 정보 확인, 모든 Value를 요소로 갖는 dict_values 개체 반환
- items() : Key와 Value 정보를 확인, 모든 Key, Value를 (Key, Value) 형태로 갖는 dict_items 개체를 반환
- clear() : 모든 요소 삭제
- get() : Key로 Value를 찾을 때 없는 경우 대신 표시할 값 지정
- e.g. member.get('이메일', '없음'))
- member 딕셔너리에 '이메일' Key가 없을 경우 '없음' 표시