목차
1. 딕셔너리 Dictionary란 무엇인가?
사람을 소개할 때 우리는 이름, 나이, 직업, 거주지처럼 항목 이름과 값을 함께 말합니다.
- 이름 : 김철수
- 나이 : 28
- 직업 : 개발자
- 거주지 : 서울
이 정보를 리스트로 저장하면 다음처럼 작성할 수 있습니다.
person = ["김철수", 28, "개발자", "서울"]하지만 두 번째 값이 나이인지, 직업인지, 주소인지 알기 어렵습니다. 그래서 Python은 데이터에 이름표를 붙이는 방법을 제공합니다. 그것이 바로 Dictionary입니다.
Dictionary는 이름표를 붙여 데이터를 찾을 수 있게 해주는 Python의 핵심 자료구조입니다.
2. 왜 딕셔너리가 필요한가?
리스트는 위치로 데이터를 찾습니다.
student = ["이수", 20, "Python"]나이를 가져오려면 다음처럼 위치 번호를 사용해야 합니다.
student[1]하지만 데이터가 많아지면 student[17], student[23], student[45]가 각각 무엇을 의미하는지 기억하기 어렵습니다.
student[17]
student[23]
student[45]반면 Dictionary는 이름으로 값을 찾을 수 있습니다.
student["age"]| 자료구조 | 데이터 접근 방식 | 특징 |
|---|---|---|
| List | 순서와 인덱스 | 몇 번째 데이터인지 알아야 합니다. |
| Dictionary | Key 이름 | 무슨 데이터인지 이름으로 바로 알 수 있습니다. |
3. Key와 Value 구조
실무에서 처음 만나는 Dictionary는 보통 다음과 같은 형태입니다.
student = {
"name": "이수",
"age": 20,
"language": "Python"
}구조를 보면 왼쪽은 Key, 오른쪽은 Value입니다.
name → 이수
age → 20
language → Python| 구성 요소 | 의미 | 예시 |
|---|---|---|
| Key | 값을 찾기 위한 이름표입니다. | name, age, language |
| Value | Key에 연결된 실제 데이터입니다. | 이수, 20, Python |
자동차 키에 비유하기
자동차 키의 버튼 이름을 누르면 특정 동작이 실행됩니다. Dictionary도 Key를 사용해 Value에 접근합니다.
시동 버튼 → 엔진 시작
트렁크 버튼 → 트렁크 열림
잠금 버튼 → 문 잠금car = {
"brand": "Tesla",
"model": "Model Y",
"color": "White"
}4. 데이터 조회, 수정, 추가
데이터 꺼내기
print(car["brand"])결과입니다.
Teslaprint(car["color"])결과입니다.
White데이터 수정하기
car["color"] = "Black"결과 구조입니다.
{
"brand": "Tesla",
"model": "Model Y",
"color": "Black"
}새로운 데이터 추가
car["year"] = 2026결과 구조입니다.
{
"brand": "Tesla",
"model": "Model Y",
"color": "Black",
"year": 2026
}5. 실무 이야기: 회원가입 시스템
회원가입 기능을 만든다고 가정하면 사용자 정보는 보통 Dictionary 형태로 저장됩니다.
user = {
"id": "idaro",
"email": "idaro@example.com",
"name": "Lee Soo",
"role": "admin"
}실제 웹서비스에서는 거의 대부분 이런 구조로 사용자 정보, 권한, 프로필 데이터를 관리합니다.
- id
- name
- role
- profile
- created_at
6. JSON과 Dictionary
웹 개발자가 가장 많이 보는 데이터 형식 중 하나가 JSON입니다. JSON은 Python Dictionary와 매우 비슷합니다.
JSON 예시
{
"name": "Kim",
"age": 30,
"city": "Seoul"
}Python Dictionary 예시
{
"name": "Kim",
"age": 30,
"city": "Seoul"
}JSON과 Python Dictionary는 사실상 형제라고 봐도 좋습니다. 웹 API 응답을 Python에서 다룰 때 Dictionary 이해가 필수입니다.
7. API와 데이터베이스 연결
API가 Dictionary를 좋아하는 이유
날씨 API 응답은 보통 다음처럼 Key와 Value 구조를 갖습니다.
{
"city":"Seoul",
"temperature":31,
"humidity":72
}Python에서 받아오면 다음과 같은 Dictionary로 다룰 수 있습니다.
weather = {
"city":"Seoul",
"temperature":31,
"humidity":72
}온도 출력입니다.
print(weather["temperature"])결과입니다.
31데이터베이스와의 연결
MySQL 테이블에서 데이터를 조회한다고 가정해보겠습니다.
| id | name | age |
|---|---|---|
| 1 | Kim | 30 |
조회 결과는 보통 다음과 같은 Dictionary 형태로 반환됩니다.
{
"id": 1,
"name": "Kim",
"age": 30
}Database → Dictionary
Dictionary → JSON
JSON → APIDatabase, Dictionary, JSON, API는 서로 긴밀하게 연결되어 있습니다.
8. KeyError와 반복문
존재하지 않는 Key 접근
user = {
"name":"Kim"
}
print(user["age"])결과입니다.
KeyError존재하지 않는 Key에 접근하면 오류가 발생합니다. 안전하게 접근하려면 get()을 사용할 수 있습니다.
print(user.get("age"))결과입니다.
None반복문과 함께 사용하기
user = {
"name":"Kim",
"age":30,
"city":"Seoul"
}for key, value in user.items():
print(key, value)결과입니다.
name Kim
age 30
city Seoul9. 실전 예제와 성장 포인트
간단한 게임 캐릭터 정보
character = {
"name":"Warrior",
"level":15,
"hp":1200,
"attack":180
}출력합니다.
print(character["name"])
print(character["hp"])결과입니다.
Warrior
1200Python 개발자의 성장 포인트
Dictionary를 이해하는 순간 프로그램, 웹 개발, API, 데이터베이스, AI 개발로 가는 문이 열리기 시작합니다.
scores = [90, 80, 70]처럼 리스트로 단순 값을 관리합니다.
student = {"name":"Lee", "scores":[90,80,70]}처럼 구조화된 데이터를 다룹니다.
user, profile, country처럼 중첩된 Dictionary 구조를 이해하고 API·DB 데이터와 연결합니다.
scores = [90, 80, 70]student = {
"name":"Lee",
"scores":[90,80,70]
}{
"user":{
"id":"idaro",
"profile":{
"name":"Lee Soo",
"country":"KR"
}
}
}10. 정리와 다음 편 예고
오늘 배운 내용을 한 문장으로 정리하면 리스트가 순서로 찾는 데이터 창고라면, 딕셔너리는 이름표를 붙여 찾는 데이터 창고입니다.
- Dictionary는 Key와 Value로 데이터를 저장합니다.
- List는 순서로 찾고 Dictionary는 이름으로 찾습니다.
- 값 조회, 수정, 추가가 쉽습니다.
- 존재하지 않는 Key 접근은 KeyError를 발생시킵니다.
- get()을 사용하면 더 안전하게 값을 조회할 수 있습니다.
- items()를 사용하면 Key와 Value를 반복 처리할 수 있습니다.
- JSON, API, Database와 매우 밀접하게 연결됩니다.
현대 소프트웨어는 웹사이트, 모바일 앱, API 서버, AI 시스템, 데이터베이스, 클라우드 서비스까지 거의 모두 Dictionary와 유사한 구조를 기반으로 데이터를 주고받습니다.
- 튜플 Tuple 이해하기
- 절대 변하지 않는 데이터를 저장하는 방법
- 리스트와 튜플의 차이점
- 성능 차이와 실무 활용법
