
이전 글에서는「3편. 조건문·반복문 완전 정복」을 다뤘습니다.
이제부터는
“데이터를 어떻게 담고 관리할 것인지”
를 다룰 차례입니다
.
그 출발점이 바로 리스트(list)와 딕셔너리(dict)입니다.
- 파이썬에서 가장 많이 쓰이는 기본 데이터 구조
- 실무 코드, 알고리즘, 웹/데이터 분석, 챗봇 로직까지 전부 이 둘을 바탕으로 구성되는 경우가 많습니다.
이번 글에서는 어렵게 이론을 파고들기보다,
- 언제 리스트를 쓰고, 언제 딕셔너리를 쓰는지
- 실제 코드 예제를 통해 감 잡기
에 집중해서 설명하겠습니다.
1. 왜 데이터 구조가 중요한가?
간단한 예를 들어 보겠습니다.
“학생 점수 3개를 저장하고, 평균을 구하라”
만약 변수를 하나씩 만든다면:
score1 = 90
score2 = 85
score3 = 100
avg = (score1 + score2 + score3) / 3
학생이 3명일 때는 괜찮지만,
30명, 300명이 되면 코드가 감당이 안 됩니다.
그래서 우리는
- 여러 개의 데이터를 한 번에 묶어서 관리하는 구조
- 필요할 때는 꺼내 쓰고, 반복문과 함께 쉽게 처리할 수 있는 구조
가 필요합니다.
그 역할을 하는 것이 바로 리스트와 딕셔너리입니다.
2. 리스트(List) – 순서가 있는 데이터 모음
리스트는 대괄호 []로 감싸서 여러 값을 한 번에 저장하는 자료형입니다.
scores = [90, 85, 100]
fruits = ["apple", "banana", "cherry"]
mixed = [10, "파이썬", True]
- 순서(index)가 있습니다.
- 0부터 시작하는 인덱스로 값에 접근합니다.
print(scores[0]) # 90
print(scores[1]) # 85
print(scores[2]) # 100
2-1. 리스트 수정하기
리스트 안의 값을 바꾸는 것도 가능합니다.
scores[1] = 95 # 두 번째 점수를 95로 수정
print(scores) # [90, 95, 100]
2-2. 값 추가·삭제
자주 쓰는 메서드 몇 가지만 정리해 보겠습니다.
numbers = [1, 2, 3]
numbers.append(4) # 맨 뒤에 4 추가
# [1, 2, 3, 4]
numbers.insert(1, 1.5) # 인덱스 1 위치에 1.5 삽입
# [1, 1.5, 2, 3, 4]
numbers.remove(3) # 값 3을 제거 (처음 나온 것만)
# [1, 1.5, 2, 4]
last = numbers.pop() # 마지막 값 꺼내기 (삭제 + 반환)
# last = 4, numbers = [1, 1.5, 2]
2-3. 리스트와 반복문은 항상 세트
리스트의 진짜 힘은 반복문과 함께 쓸 때 나옵니다.
scores = [90, 85, 100, 70]
total = 0
for s in scores:
total += s
avg = total / len(scores)
print("평균 점수:", avg)
- for s in scores: → 리스트에 들어 있는 값을 앞에서부터 하나씩 꺼내기
- len(scores) → 리스트 길이(원소 개수)
조건문·반복문을 이미 익히셨다면,
리스트를 다루는 일은 “자료형만 달라졌을 뿐, 패턴은 동일”하다는 걸 느끼실 겁니다.

3. 딕셔너리(Dictionary) – “이름표를 붙여서” 저장하는 구조
리스트는 순서로 데이터를 찾지만,
딕셔너리는 “키(key)”라는 이름표로 데이터를 찾습니다.
student = {
"name": "홍길동",
"age": 20,
"major": "컴퓨터공학"
}
- "name", "age", "major" → 키(key)
- "홍길동", 20, "컴퓨터공학" → 값(value)
값을 꺼낼 때는 인덱스가 아니라 키를 사용합니다.
print(student["name"]) # 홍길동
print(student["age"]) # 20
3-1. 값 추가·수정·삭제
student["grade"] = "A" # 새 키 추가
student["age"] = 21 # 기존 값 수정
print(student)
# {'name': '홍길동', 'age': 21, 'major': '컴퓨터공학', 'grade': 'A'}
del student["major"] # 'major' 키 삭제
3-2. 안전하게 가져오기 – get()
존재하지 않을 수도 있는 키를 사용할 때는 get()을 쓰면 에러를 피할 수 있습니다.
nickname = student.get("nickname") # 없으면 None 반환
nickname2 = student.get("nickname", "없음") # 기본값 지정 가능
print(nickname) # None
print(nickname2) # 없음
3-3. 키·값·쌍 한 번에 다루기
print(student.keys()) # dict_keys(['name', 'age', 'grade'])
print(student.values()) # dict_values(['홍길동', 21, 'A'])
print(student.items()) # dict_items([('name', '홍길동'), ('age', 21), ('grade', 'A')])
for key, value in student.items():
print(key, ":", value)
딕셔너리는
JSON, API 응답, 데이터베이스 레코드 등 실제 서비스와 데이터를 주고받을 때 기본 구조라고 생각하시면 됩니다.

4. 리스트 vs 딕셔너리, 언제 무엇을 쓸까?
많이 헷갈리는 부분이 바로 이 부분입니다.
간단한 기준을 정리해 볼게요.
4-1. 리스트가 더 어울리는 상황
- “순서대로 처리해야 하는 데이터”
- 예: 온도 기록, 주가, 방문자 수 등 시간 순서 데이터
- 인덱스 번호로 접근해도 될 때
- 단순히 값의 모음이라, 각 값에 이름을 따로 붙일 필요가 없을 때
temperatures = [18.5, 19.2, 21.0, 20.3] # 하루 시간대별 온도
4-2. 딕셔너리가 더 어울리는 상황
- 하나의 **객체(사람, 상품, 게시글)**에 여러 속성이 붙어 있을 때
- “번호 0, 1, 2”보다 name, price, title 같은 이름이 더 직관적일 때
- 키로 바로 찾아 쓰고 싶을 때
user = {
"id": 1001,
"username": "coder_lee",
"email": "lee@example.com"
}
4-3. 가장 많이 쓰는 조합: “딕셔너리의 리스트”
실무 코드에서 가장 자주 등장하는 형태입니다.
students = [
{"name": "철수", "score": 85},
{"name": "영희", "score": 92},
{"name": "민수", "score": 78},
]
# 90점 이상 학생만 출력
for s in students:
if s["score"] >= 90:
print(s["name"], ":", s["score"])
- 리스트: 학생 여러 명을 순서대로 담는 역할
- 딕셔너리: 각 학생이 가진 정보(이름, 점수)를 표현
웹 개발, 데이터 분석, API 응답 파싱에서
이 패턴을 정말 자주 만나게 됩니다.
5. 이번 글에서 꼭 가져가야 할 핵심 요약
마지막으로 한 번 정리해 봅시다.
- 리스트(list)
- 여러 값을 순서대로 저장하는 구조
- 인덱스(0, 1, 2, …)로 접근
- append, insert, remove, pop, len() 자주 사용
- 딕셔너리(dict)
- 키: 값 쌍으로 데이터를 저장
- “이름표(키)”로 바로 찾는 구조
- student["name"], get(), keys(), items() 자주 사용
- 언제 어떤 걸 쓸까?
- 순서대로만 다루면 리스트
- 각 항목에 여러 속성이 붙어 있으면 딕셔너리
- 실제로는 “딕셔너리의 리스트” 조합을 가장 많이 쓰게 된다.
🔔 다음 글 예고 – 5편. 함수(Function)로 코드 구조화하기
지금까지 우리는
- 변수
- 조건문
- 반복문
- 리스트·딕셔너리
까지 배웠습니다.
이제 남은 큰 퍼즐 조각 하나가 있습니다. 바로 함수(Function)입니다.
다음 글「5편. 함수(Function)로 코드 구조화하기」에서는
- 왜 함수를 쓰면 코드가 훨씬 읽기 쉬워지는지
- 리스트·딕셔너리를 함수의 입력/출력으로 사용하면서
- “잘 구조화된 코드”를 만드는 방법
을 단계별로 정리해 보겠습니다.
'코딩과 AI와 자동화 > 코딩' 카테고리의 다른 글
| 파이썬 미니 프로젝트: 리스트/딕셔너리 + 함수로 “할 일(To-Do) 관리 프로그램” 완성하기 (파이썬 기초 6편) (0) | 2026.01.14 |
|---|---|
| 파이썬 함수(Function) 사용법: def/return/매개변수 한 번에 정리 (파이썬 기초 5편) (0) | 2026.01.05 |
| 3편. 조건문·반복문 완전 정복 (파이썬 기초) (0) | 2025.12.10 |
| 2편. 파이썬 기본 문법 제대로 이해하기 (0) | 2025.12.06 |
| 코딩에 대한 모든 것 (0) | 2025.11.18 |