| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- IntelliJ
- Visual Studio Code
- ArrayList
- 테스트자동화
- 스프링부트
- Array
- input
- list
- math
- html
- string
- 단위테스트
- CSS
- 인텔리제이
- javascript
- 배열
- 문자열
- junit5
- 자바문법
- java테스트
- Eclipse
- 정규식
- 자바
- Java
- SpringBoot
- junit
- HashMap
- js
- vscode
- 자바스크립트
- Today
- Total
어제 오늘 내일
[Python 기초] 6. "데이터에 이름표를 달아주자!" 파이썬 딕셔너리(Dictionary)와 집합(Set) 본문
만약 한 사람의 정보를 리스트로 저장한다면 이렇게 될 것입니다. user = ["홍길동", 30, "010-1234-5678"].
나이를 꺼내려면 user[1]을 찾아야 하죠. 1번 방이 나이였다는 사실을 개발자가 매번 외우고 있어야 합니다. 너무 불편하지 않나요?
이럴 때 사용하는 것이 바로 파이썬의 꽃, 딕셔너리(Dictionary)입니다.
1. 딕셔너리(Dictionary): Key와 Value의 환상 짝꿍
딕셔너리는 말 그대로 '사전'입니다. 사전에서 단어(Key)를 찾으면 뜻(Value)이 나오는 것처럼, 파이썬 딕셔너리도 이름표(Key)와 실제 데이터(Value)가 한 쌍으로 묶여 있습니다.
만드는 방법은 중괄호 { }를 사용하며, 내부는 이름표 : 데이터 형태로 적어줍니다. 웹 개발에서 자주 쓰이는 JSON 포맷과 완전히 똑같이 생겼습니다.
📌 예제 코드: 딕셔너리 만들고 데이터 꺼내기
# 딕셔너리 생성 (중괄호 사용, Key: Value 형태)
user_info = {
"name": "홍길동",
"age": 30,
"phone": "010-1234-5678"
}
# 1. 데이터 꺼내기 (대괄호 안에 인덱스 번호 대신 'Key 이름'을 넣습니다!)
print(user_info["name"]) # 출력: 홍길동
print(user_info["age"]) # 출력: 30
# 2. 안전하게 꺼내기 (.get() 함수 사용)
print(user_info.get("email")) # Key가 없으면 에러 대신 'None(없음)'을 반환합니다.
# print(user_info["email"]) # 이렇게 하면 KeyError가 발생하며 프로그램이 멈춥니다.
💡 코드 설명:
user_info[1]처럼 숫자로 찾는 것이 아니라,user_info["name"]처럼 직관적인 이름표로 데이터를 찾습니다. 코드를 읽기만 해도 무슨 데이터인지 바로 알 수 있죠!
2. 딕셔너리 요리하기: 추가, 수정, 삭제
딕셔너리도 리스트처럼 내용물을 자유롭게 바꿀 수 있습니다. 방법은 아주 직관적입니다.
📌 예제 코드: 딕셔너리 데이터 조작하기
my_dict = {"apple": "사과", "banana": "바나나"}
# 1. 새로운 데이터 추가하기 (없는 Key에 값을 넣으면 새로 생김)
my_dict["grape"] = "포도"
print(my_dict) # 출력: {'apple': '사과', 'banana': '바나나', 'grape': '포도'}
# 2. 기존 데이터 수정하기 (있는 Key에 값을 넣으면 덮어쓰기 됨)
my_dict["apple"] = "꿀사과"
print(my_dict) # 출력: {'apple': '꿀사과', 'banana': '바나나', 'grape': '포도'}
# 3. 데이터 삭제하기 (del 키워드 사용)
del my_dict["banana"]
print(my_dict) # 출력: {'apple': '꿀사과', 'grape': '포도'}
3. 딕셔너리의 유용한 도구들 (keys, values, items)
딕셔너리 안에 어떤 이름표(Key)들이 있는지, 혹은 어떤 값(Value)들만 있는지 모아서 보고 싶을 때가 있습니다. 이때 아래 세 가지 함수를 사용합니다.
score_dict = {"국어": 90, "영어": 85, "수학": 100}
# 1. Key(과목명)만 다 모아줘!
print(score_dict.keys()) # 출력: dict_keys(['국어', '영어', '수학'])
# 2. Value(점수)만 다 모아줘!
print(score_dict.values()) # 출력: dict_values([90, 85, 100])
# 3. Key와 Value를 쌍으로 묶어서 다 모아줘!
print(score_dict.items())
# 출력: dict_items([('국어', 90), ('영어', 85), ('수학', 100)])
(💡 참고: 이 함수들은 나중에 배울 for 반복문과 결합하면 엄청난 시너지를 발휘합니다.)
4. 집합(Set): 중복을 허락하지 않는 주머니
마지막으로 알아볼 자료형은 집합(Set)입니다. 딕셔너리와 똑같이 중괄호 { }를 쓰지만, Key: Value 쌍이 아니라 리스트처럼 값만 덩그러니 들어있습니다.
집합의 가장 강력한 특징 두 가지는 다음과 같습니다.
- 중복을 허용하지 않는다.
- 순서가 없다. (인덱싱 불가능)
📌 예제 코드: 리스트의 중복 데이터 1초 만에 날리기
집합은 언제 쓸까요? 바로 "수많은 데이터 중에서 중복을 제거할 때" 가장 많이 쓰입니다.
# 1. 중복이 잔뜩 있는 리스트
attendance_list = ["철수", "영희", "민수", "철수", "철수", "영희"]
# 2. 리스트를 집합(Set)으로 변환해 버립니다! (이때 중복이 마법처럼 사라짐)
unique_set = set(attendance_list)
print(unique_set) # 출력: {'영희', '민수', '철수'} (순서는 뒤죽박죽일 수 있음)
# 3. 다시 다루기 편하게 리스트로 되돌려줍니다.
final_list = list(unique_set)
print(final_list) # 출력: ['영희', '민수', '철수']
💡 수학 시간에 배운 교집합, 합집합도 가능합니다.
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
print(set1 & set2) # 교집합 (공통으로 있는 것) -> {3, 4}
print(set1 | set2) # 합집합 (전체 다 합친 것, 중복은 하나만) -> {1, 2, 3, 4, 5, 6}
📝 마치며
지금까지 배운 파이썬의 4대 데이터 바구니를 총정리해 보겠습니다.
- 리스트 `[ ]`: 순서가 있고, 중복도 허용하고, 내용물 수정도 가능. (가장 만만함)
- 튜플 `( )`: 리스트와 같지만, 내용물 수정이 절대 불가능. (안전함)
- 딕셔너리 `{Key: Value}`: 순서 대신 이름표(Key)로 값을 찾음. (직관적임)
- 집합 `{ }`: 순서가 없고, 중복을 제거해 줌. (필터 역할)
상황에 맞게 적절한 바구니를 고르는 것이 좋은 코드를 작성하는 첫걸음입니다!
재료 준비는 모두 끝났습니다. 이제 이 데이터들을 가지고 "비가 오면 우산을 쓰고, 안 오면 그냥 간다" 같은 조건을 만들어 컴퓨터에게 생각하는 법을 가르칠 차례입니다.
다음 포스팅에서는 "들여쓰기의 마법! 프로그램의 흐름을 통제하는 if문(조건문)"에 대해 알아보겠습니다.
도움이 되셨다면 좋아요와 댓글 부탁드립니다! 🐍
'IT > Python' 카테고리의 다른 글
| [Python 기초] 8. "100번의 단순 노동을 단 세 줄로!" 파이썬의 for-in 반복문 완벽 가이드 (0) | 2026.04.10 |
|---|---|
| [Python 기초] 7. "괄호가 없어서 어색해요..." 파이썬의 생명, 들여쓰기(Indentation)와 if문 (0) | 2026.04.09 |
| [Python 기초] 5. "수십 개의 데이터를 상자 하나에!" 파이썬 리스트(List)와 튜플(Tuple) 완벽 가이드 (1) | 2026.04.08 |
| [Python 기초] 4. "문자열을 떡 주무르듯이" 인덱싱, 슬라이싱, 그리고 f-string (0) | 2026.04.08 |
| [Python 기초] 3. "Hello World"는 이제 그만! 변수와 자료형(Data Type) 제대로 알기 (0) | 2026.04.07 |
