PythonPython 기초강의 10개 중 4번째난이도 입문

리스트와 딕셔너리 — 파이썬의 핵심 자료구조

발행 읽는 시간 약 2 분

  • Python
  • 리스트
  • 딕셔너리
  • 자료구조
  • 컴프리헨션

강의 소개

리스트로 순서 있는 데이터를 관리하고, 딕셔너리로 키-값 쌍을 다루는 방법을 배웁니다. 리스트 컴프리헨션과 딕셔너리 조작 패턴도 익힙니다.

여러 값을 한 번에 관리하기#

변수를 하나씩 만들면 불편합니다.

Python
# ❌ 이렇게 하면 안 됨
student1 = "철수"
student2 = "영희"
student3 = "민준"

# ✅ 리스트로 묶기
students = ["철수", "영희", "민준"]

리스트 (List)#

순서가 있고, 중복 허용, 변경 가능한 자료구조입니다.

Python
fruits = ["사과", "바나나", "체리", "사과"]  # 중복 허용

# 인덱싱
print(fruits[0])    # 사과 (첫 번째)
print(fruits[-1])   # 사과 (마지막)

# 슬라이싱
print(fruits[1:3])  # ['바나나', '체리']
print(fruits[:2])   # ['사과', '바나나']
print(fruits[::2])  # ['사과', '체리']  (2칸씩)

리스트 조작#

Python
items = ["A", "B", "C"]

# 추가
items.append("D")        # 끝에 추가: ['A', 'B', 'C', 'D']
items.insert(1, "X")     # 인덱스 1에 삽입: ['A', 'X', 'B', 'C', 'D']

# 삭제
items.remove("X")        # 값으로 삭제
deleted = items.pop()    # 마지막 요소 꺼내기: 'D'
deleted = items.pop(0)   # 인덱스로 꺼내기: 'A'

# 검색
print("B" in items)      # True
print(items.index("C"))  # 1

# 정렬
nums = [3, 1, 4, 1, 5, 9]
nums.sort()              # 원본 수정: [1, 1, 3, 4, 5, 9]
sorted_nums = sorted(nums, reverse=True)  # 새 리스트: [9, 5, 4, 3, 1, 1]

# 길이
print(len(items))        # 2

리스트 컴프리헨션#

반복문으로 리스트를 만드는 파이썬다운 방법입니다.

Python
# 일반 반복문
squares = []
for n in range(1, 6):
    squares.append(n ** 2)
# [1, 4, 9, 16, 25]

# 리스트 컴프리헨션 (한 줄로)
squares = [n ** 2 for n in range(1, 6)]
# [1, 4, 9, 16, 25]

# 조건 추가
evens = [n for n in range(20) if n % 2 == 0]
# [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

# 문자열 변환
names = ["alice", "bob", "charlie"]
upper_names = [name.upper() for name in names]
# ['ALICE', 'BOB', 'CHARLIE']

딕셔너리 (Dictionary)#

키(key)와 값(value)의 쌍으로 저장합니다. 순서 있음 (Python 3.7+), 키는 중복 불가.

Python
person = {
    "name": "김철수",
    "age": 25,
    "job": "개발자",
    "skills": ["Python", "JavaScript"]
}

# 값 접근
print(person["name"])          # 김철수
print(person.get("email", "없음"))  # 없음 (키가 없을 때 기본값)

# 추가/수정
person["email"] = "kim@example.com"
person["age"] = 26

# 삭제
del person["job"]
removed = person.pop("email")

# 키 존재 확인
print("name" in person)   # True

딕셔너리 순회#

Python
profile = {"name": "철수", "age": 25, "city": "서울"}

# 키만
for key in profile:
    print(key)

# 값만
for value in profile.values():
    print(value)

# 키-값 쌍
for key, value in profile.items():
    print(f"{key}: {value}")

딕셔너리 컴프리헨션#

Python
# 제곱수 딕셔너리
squares = {n: n**2 for n in range(1, 6)}
# {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

# 필터링
scores = {"철수": 85, "영희": 92, "민준": 67, "지수": 78}
passed = {name: score for name, score in scores.items() if score >= 70}
# {'철수': 85, '영희': 92, '지수': 78}

튜플 (Tuple)#

리스트와 비슷하지만 변경 불가(immutable)합니다.

Python
point = (10, 20)          # 좌표
rgb = (255, 128, 0)       # 색상

x, y = point              # 언패킹
print(f"x={x}, y={y}")   # x=10, y=20

# 함수에서 여러 값 반환할 때 자동으로 튜플
def get_range(nums):
    return min(nums), max(nums)

lo, hi = get_range([3, 1, 4, 1, 5])   # (1, 5) 언패킹

집합 (Set)#

순서 없음, 중복 제거, 수학적 집합 연산.

Python
a = {1, 2, 3, 4, 5}
b = {3, 4, 5, 6, 7}

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

# 중복 제거
data = [1, 2, 2, 3, 3, 3, 4]
unique = list(set(data))   # [1, 2, 3, 4]

실전 패턴: JSON 데이터 처리#

API 응답은 대부분 딕셔너리/리스트 구조입니다.

Python
import json

# API 응답 예시
response_text = '''
{
    "users": [
        {"id": 1, "name": "철수", "active": true},
        {"id": 2, "name": "영희", "active": false},
        {"id": 3, "name": "민준", "active": true}
    ],
    "total": 3
}
'''

data = json.loads(response_text)

# 활성 사용자만 추출
active_users = [
    user["name"] 
    for user in data["users"] 
    if user["active"]
]
print(active_users)  # ['철수', '민준']
print(f"전체: {data['total']}명, 활성: {len(active_users)}명")

자료구조 비교#

자료구조문법순서중복변경주요 용도
list[1, 2, 3]✅✅✅순서 있는 목록
dict{"a": 1}✅키 불가✅키-값 매핑
tuple(1, 2, 3)✅✅❌불변 데이터
set{1, 2, 3}❌❌✅중복 제거

정리#

개념핵심
리스트순서 있는 가변 컬렉션, .append(), .remove()
리스트 컴프리헨션[expr for x in iter if cond]
딕셔너리키-값 쌍, .get(), .items()
딕셔너리 컴프리헨션{k: v for k, v in iter}
튜플불변 리스트, 언패킹 가능
집합중복 제거, 집합 연산

다음 편에서는 파일 입출력 — 파일을 읽고 쓰고, CSV·JSON 데이터를 처리하는 방법을 배웁니다.

Follow · Ask · Work

이 글이 도움이 됐다면

짧은 작업 기록과 데모는 인스타그램에 올립니다. 만들고 싶은 것이 있다면 프로젝트 의뢰나 협업 제안도 편하게 보내 주세요.

글쓴이

파란여우

직접 만든 AI 앱·제품의 개발·배포를 공개하는 실전형 테크 크리에이터

파란여우 소개 Instagram @bluefox._.hi

이어서 보기

만들고 싶은 것이 있다면 프로젝트 의뢰로 알려 주세요.