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() 함수를 이용하여 리스트 안의 리스트나 튜플, 튜플 안의 리스트나 튜플 값을 딕셔너리로 변환이 가능하다.
  • 딕셔너리 변경, 삭제, 추가
    • 딕셔너리 요소 값 변경 : 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 = {}
  • 딕셔너리 관련 메서드
    • 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가 없을 경우 '없음' 표시