기초

파이썬 기초 03강 — 자료구조: 리스트·튜플·딕셔너리·셋

🎯 학습 목표

  • 리스트·튜플·딕셔너리·셋의 차이를 구분한다.
  • 각 자료구조의 기본 조작(추가·삭제·조회)을 한다.
  • 상황에 맞는 자료구조를 고른다.

📖 리스트(list) — 순서 있는 변경 가능한 묶음

fruits = ["사과", "바나나", "포도"]
print(fruits[0])        # '사과'
fruits.append("딸기")    # 끝에 추가 → ['사과','바나나','포도','딸기']
fruits[1] = "망고"       # 수정 (리스트는 변경 가능)
fruits.remove("포도")    # 값으로 삭제
print(len(fruits))      # 개수
print("사과" in fruits)  # True  포함 여부

# 슬라이싱도 문자열과 동일
print(fruits[:2])       # 앞 2개

리스트는 가장 많이 쓰는 자료구조입니다. 순서가 있고, 자유롭게 추가·수정·삭제할 수 있습니다.

📖 튜플(tuple) — 순서 있지만 변경 불가

point = (3, 5)          # 소괄호. 한번 만들면 못 바꿈
print(point[0])        # 3
x, y = point           # 언패킹: x=3, y=5
# point[0] = 9         # ❌ 에러: 튜플은 수정 불가

좌표 (x, y)처럼 바뀌면 안 되는 값 묶음이나 함수가 여러 값을 반환할 때 씁니다. 변경 불가라 안전하고 약간 더 가볍습니다.

📖 딕셔너리(dict) — 키로 값을 찾는 묶음

person = {"name": "철수", "age": 20}
print(person["name"])       # '철수'  키로 조회
person["age"] = 21          # 수정
person["city"] = "서울"      # 새 키 추가
print(person.get("phone", "없음"))  # 키 없으면 기본값 '없음' (안전)

for key, value in person.items():   # 키-값 순회
    print(key, "→", value)

딕셔너리는 “이름표(키) → 값” 구조입니다. 인덱스 번호가 아니라 의미 있는 키로 값을 찾으므로, 데이터를 다룰 때 매우 강력합니다(JSON과 똑같은 구조).

📖 셋(set) — 중복 없는 묶음

nums = {1, 2, 2, 3, 3, 3}
print(nums)             # {1, 2, 3}  중복 자동 제거

a = {1, 2, 3}; b = {3, 4, 5}
print(a & b)            # {3}      교집합
print(a | b)            # {1,2,3,4,5} 합집합
print(a - b)            # {1, 2}   차집합

# 리스트 중복 제거에 자주 활용
unique = list(set([1,1,2,2,3]))   # [1, 2, 3]

📖 무엇을 언제 쓰나 — 요약

리스트  : 순서가 중요하고 자주 바뀌는 값들의 목록      [ ]
튜플    : 바뀌면 안 되는 값 묶음(좌표, 다중 반환)       ( )
딕셔너리 : 이름(키)으로 값을 찾고 싶을 때 (가장 자주)     { 키:값 }
셋     : 중복 제거 / 집합 연산(교집합·합집합)          { }

⚠️ 주의사항

  • 딕셔너리에서 없는 키를 person["phone"]으로 직접 접근하면 에러(KeyError)입니다. 안전하게 .get("phone", 기본값)을 쓰세요.
  • 셋과 딕셔너리는 둘 다 중괄호 {}를 쓰지만, {} 자체는 빈 딕셔너리입니다. 빈 셋은 set()으로 만듭니다.

💡 팁

  • “이름으로 값을 찾고 싶다”는 생각이 들면 딕셔너리입니다. 실무 데이터의 대부분이 딕셔너리(또는 딕셔너리의 리스트)로 표현됩니다.
  • 리스트에 어떤 값이 들어 있는지 빠르게 확인(in)할 일이 아주 많다면 셋이 훨씬 빠릅니다.