Python

[일단!]Python 자료형 완벽 정리 – 튜플, 딕셔너리, 집합

myqzq 2025. 2. 11. 16:23

목차

    🚀 Python 자료형 완벽 정리 – 튜플, 딕셔너리, 집합 활용하기!

    Python에는 여러 개의 데이터를 저장하고 다룰 수 있는 다양한 자료형이 존재합니다.
    이전 글에서는 리스트(List) 를 활용하는 방법을 배웠다면, 이번 글에서는 튜플(Tuple), 딕셔너리(Dictionary), 집합(Set) 에 대해 깊이 있게 살펴보겠습니다. 😊

     


    📌 1. 튜플(Tuple) – 변경할 수 없는 리스트

    튜플(Tuple)은 리스트와 유사하지만, 요소를 변경할 수 없는(Immutable) 자료형 입니다.
    소괄호(())를 사용하여 생성하며, 순서를 유지하면서 여러 개의 값을 저장할 수 있습니다.


    ✅ 1) 튜플 생성하기

    fruits = ("사과", "바나나", "딸기", "포도")
    print(fruits)  # ('사과', '바나나', '딸기', '포도')

     

    튜플을 정의할 때는 괄호 ()를 사용하지만, 괄호 없이도 튜플을 생성할 수 있습니다.

    numbers = 1, 2, 3, 4, 5  # 괄호 없이 튜플 생성 가능
    print(numbers)  # (1, 2, 3, 4, 5)

    ✅ 2) 튜플의 주요 특징

    리스트와 달리 요소를 변경할 수 없음
    순서가 유지되며, 인덱스를 통해 접근 가능
    메모리 사용량이 적어 리스트보다 빠름
    데이터 보호가 필요한 경우 유용


    ✅ 3) 튜플 요소 접근 (인덱싱 & 슬라이싱)

    튜플도 리스트처럼 인덱스(Index)를 사용하여 개별 요소에 접근할 수 있습니다.

    fruits = ("사과", "바나나", "딸기", "포도")
    
    print(fruits[0])  # 사과 (첫 번째 요소)
    print(fruits[-1])  # 포도 (마지막 요소)
    print(fruits[1:3])  # ('바나나', '딸기') (슬라이싱)

     

    📌 튜플은 불변(Immutable)이므로, 요소를 변경하려 하면 오류가 발생합니다.

    fruits[0] = "망고"  # TypeError 발생: 튜플은 요소 변경 불가능

    ✅ 4) 튜플의 활용 – 여러 개의 변수 한 번에 할당하기 (언패킹)

    튜플을 활용하면 여러 개의 변수를 한 줄에 할당할 수 있습니다.

    a, b, c = (10, 20, 30)  # 튜플 언패킹 (Unpacking)
    print(a, b, c)  # 10 20 30

     

    두 변수의 값을 바꿀 때 유용

    x, y = 5, 10
    x, y = y, x  # x와 y의 값을 교환
    print(x, y)  # 10 5

     

    함수에서 여러 개의 값을 반환할 때 사용

    def get_point():
        return (3, 7)  # 튜플 반환
    
    x, y = get_point()
    print(x, y)  # 3 7

    📌 2. 딕셔너리(Dictionary) – 키(Key)와 값(Value)으로 이루어진 자료형

    딕셔너리(Dictionary)는 "키(Key)와 값(Value)의 쌍"으로 데이터를 저장하는 자료형 입니다.
    대괄호 []를 사용하는 리스트, 튜플과 달리, 중괄호 {}를 사용하여 생성합니다.

    person = {
        "이름": "홍길동",
        "나이": 25,
        "도시": "서울"
    }
    print(person)  # {'이름': '홍길동', '나이': 25, '도시': '서울'}

    ✅ 1) 딕셔너리의 주요 특징

    키(Key)를 사용하여 값(Value)에 접근
    순서가 유지되며, 중복 키는 허용되지 않음
    값은 변경 가능(Mutable)하지만, 키는 변경할 수 없음
    검색 속도가 리스트보다 빠름


    ✅ 2) 딕셔너리 요소 접근 및 값 변경

    키를 사용하여 값 가져오기

    print(person["이름"])  # 홍길동
    print(person.get("나이"))  # 25

     

    새로운 키-값 추가 및 기존 값 변경

    person["직업"] = "개발자"  # 새로운 키 추가
    person["도시"] = "부산"  # 기존 값 변경
    print(person)  # {'이름': '홍길동', '나이': 25, '도시': '부산', '직업': '개발자'}

     

    키-값 삭제하기 (del, pop)

    del person["도시"]  # 특정 키 삭제
    print(person)  # {'이름': '홍길동', '나이': 25, '직업': '개발자'}
    
    age = person.pop("나이")  # pop() 사용 시 삭제된 값 반환
    print(age)  # 25
    print(person)  # {'이름': '홍길동', '직업': '개발자'}

    ✅ 3) 딕셔너리 반복문 활용

    키(Key) 반복

    for key in person:
        print(key)  # 이름, 직업

     

    값(Value) 반복

    for value in person.values():
        print(value)  # 홍길동, 개발자

     

    키-값 쌍 반복 (.items())

    for key, value in person.items():
        print(f"{key}: {value}")
    
    # 출력
    # 이름: 홍길동
    # 직업: 개발자

    ✅ 4) 딕셔너리 활용 – 기본값 설정 및 존재 여부 확인

    값이 없을 경우 기본값 반환 (get)

    print(person.get("국적", "대한민국"))  # "대한민국" (키가 없을 경우 기본값 설정)

     

    특정 키가 존재하는지 확인 (in)

    if "이름" in person:
        print("이름이 존재합니다.")  # 출력됨

     

    모든 키 가져오기 (.keys())

    print(person.keys())  # dict_keys(['이름', '직업'])

     

    모든 값 가져오기 (.values())

    print(person.values())  # dict_values(['홍길동', '개발자'])

     

    모든 키-값 쌍 가져오기 (.items())

    print(person.items())  # dict_items([('이름', '홍길동'), ('직업', '개발자')])

    📌 3. 집합(Set) – 중복을 허용하지 않는 자료형

    집합(Set)은 중복을 허용하지 않고, 순서가 없는 자료형입니다.
    중괄호 {} 또는 set() 함수를 사용하여 생성할 수 있으며,
    빠른 멤버십 테스트(특정 값이 존재하는지 확인하는 연산)에 유용합니다.

    numbers = {1, 2, 3, 4, 5}
    print(numbers)  # {1, 2, 3, 4, 5}

    ✅ 1) 집합의 주요 특징

    중복된 요소를 허용하지 않음
    순서가 없기 때문에 인덱싱 불가능
    집합 연산(합집합, 교집합, 차집합 등)에 유용

    duplicates = {1, 2, 2, 3, 4, 4, 5}
    print(duplicates)  # {1, 2, 3, 4, 5} (중복 제거됨)

    ✅ 2) 집합(Set) 생성 및 요소 추가/삭제

    set()을 사용하여 리스트에서 중복 제거하기

    fruits_list = ["사과", "바나나", "사과", "딸기", "바나나"]
    unique_fruits = set(fruits_list)  # 중복 제거
    print(unique_fruits)  # {'사과', '바나나', '딸기'}

     

    요소 추가 (add)

    numbers = {1, 2, 3}
    numbers.add(4)
    print(numbers)  # {1, 2, 3, 4}

     

    요소 삭제 (remove, discard)

    numbers.remove(2)  # 존재하지 않는 값을 삭제하면 오류 발생
    print(numbers)  # {1, 3, 4}
    
    numbers.discard(5)  # 존재하지 않는 값을 삭제해도 오류 발생하지 않음

     

    모든 요소 제거 (clear)

    numbers.clear()
    print(numbers)  # set() (빈 집합)

    ✅ 3) 집합 연산 (합집합, 교집합, 차집합, 대칭 차집합)

    집합은 수학적 개념을 그대로 적용할 수 있어, 집합 연산이 매우 강력합니다.

    합집합 (| 또는 union())

    set1 = {1, 2, 3}
    set2 = {3, 4, 5}
    
    print(set1 | set2)  # {1, 2, 3, 4, 5}
    print(set1.union(set2))  # {1, 2, 3, 4, 5}

     

    교집합 (& 또는 intersection())

    print(set1 & set2)  # {3}
    print(set1.intersection(set2))  # {3}

     

    차집합 (- 또는 difference())

    print(set1 - set2)  # {1, 2}
    print(set1.difference(set2))  # {1, 2}

     

    대칭 차집합 (^ 또는 symmetric_difference())

    print(set1 ^ set2)  # {1, 2, 4, 5}
    print(set1.symmetric_difference(set2))  # {1, 2, 4, 5}

    ✅ 4) 집합을 활용한 중복 제거 및 포함 여부 확인

    리스트에서 중복 제거

    numbers = [1, 2, 2, 3, 4, 4, 5]
    unique_numbers = list(set(numbers))
    print(unique_numbers)  # [1, 2, 3, 4, 5]

     

    특정 값이 집합에 있는지 확인 (in)

    fruits = {"사과", "바나나", "딸기"}
    print("사과" in fruits)  # True
    print("망고" in fruits)  # False

    🚀 마무리 및 다음 글 예고

    이번 글에서는 Python의 튜플(Tuple), 딕셔너리(Dictionary), 집합(Set) 을 배워봤습니다. 🎉

     

    튜플(Tuple) → 변경할 수 없는(Immutable) 순서형 자료형
    딕셔너리(Dictionary) → 키(Key)와 값(Value)으로 데이터를 저장하는 자료형
    집합(Set) → 중복을 허용하지 않고, 집합 연산이 가능한 자료형

     

    📌 다음 글에서는 Python을 활용한 간단한 실습을 진행해 보겠습니다! 🎯
    구구단 출력, 계산기 만들기, 체지방률 계산 등 기초적인 Python 프로그래밍을 직접 구현하면서 실력을 키워볼 예정입니다. 😊🚀