목차
- 서론
- 딕셔너리란 무엇인가?
- 딕셔너리의 기본 개념
- 딕셔너리 생성 및 접근
- 딕셔너리 메소드
- 딕셔너리 활용 예제
- 집합이란 무엇인가?
- 집합의 기본 개념
- 집합 생성 및 접근
- 집합 메소드
- 집합 활용 예제
- 딕셔너리와 집합 비교
- 실습 예제
- 마무리
- 추천 태그
1. 서론
Python에서 딕셔너리와 집합은 매우 유용한 데이터 구조입니다. 딕셔너리는 키-값 쌍을 저장하는 데이터 구조이며, 집합은 중복되지 않는 요소들을 저장하는 데이터 구조입니다. 이번 포스팅에서는 딕셔너리와 집합의 기본 개념부터 활용법까지 자세히 알아보겠습니다.
2. 딕셔너리란 무엇인가?
2.1 딕셔너리의 기본 개념
딕셔너리는 키(key)와 값(value) 쌍을 저장하는 데이터 구조입니다. 각 키는 유일하며, 값을 통해 접근할 수 있습니다. 딕셔너리는 중괄호 {}
를 사용하여 정의합니다.
# 딕셔너리 생성 예시
student = {
"name": "철수",
"age": 20,
"major": "컴퓨터공학"
}
print(student) # {'name': '철수', 'age': 20, 'major': '컴퓨터공학'}
2.2 딕셔너리 생성 및 접근
딕셔너리는 중괄호 {}
를 사용하여 생성하며, 키를 사용하여 값을 조회할 수 있습니다.
# 딕셔너리 생성
student = {
"name": "철수",
"age": 20,
"major": "컴퓨터공학"
}
# 값 조회
print(student["name"]) # 철수
print(student["age"]) # 20
2.3 딕셔너리 메소드
딕셔너리는 다양한 메소드를 제공하여 데이터를 조작할 수 있습니다.
# 새로운 키-값 추가
student["grade"] = "A"
print(student) # {'name': '철수', 'age': 20, 'major': '컴퓨터공학', 'grade': 'A'}
# 기존 값 수정
student["age"] = 21
print(student) # {'name': '철수', 'age': 21, 'major': '컴퓨터공학', 'grade': 'A'}
# 키-값 삭제
del student["major"]
print(student) # {'name': '철수', 'age': 21, 'grade': 'A'}
# 모든 키 조회
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')])
2.4 딕셔너리 활용 예제
딕셔너리를 활용하여 학생들의 성적을 관리하는 예제를 작성해보겠습니다.
# 학생 성적 관리 딕셔너리
grades = {
"철수": 85,
"영희": 90,
"민수": 78
}
# 성적 조회
print(grades["철수"]) # 85
# 성적 추가
grades["지민"] = 88
print(grades) # {'철수': 85, '영희': 90, '민수': 78, '지민': 88}
# 성적 수정
grades["철수"] = 95
print(grades) # {'철수': 95, '영희': 90, '민수': 78, '지민': 88}
# 성적 삭제
del grades["민수"]
print(grades) # {'철수': 95, '영희': 90, '지민': 88}
3. 집합이란 무엇인가?
3.1 집합의 기본 개념
집합은 중복되지 않는 요소들을 저장하는 데이터 구조입니다. 수학에서의 집합과 유사하며, 중괄호 {}
를 사용하여 정의합니다.
# 집합 생성 예시
fruits = {"apple", "banana", "cherry"}
print(fruits) # {'apple', 'banana', 'cherry'}
3.2 집합 생성 및 접근
집합은 중괄호 {}
를 사용하여 생성하며, 요소의 중복을 허용하지 않습니다.
# 집합 생성
fruits = {"apple", "banana", "cherry"}
# 요소 접근 (집합은 인덱스가 없으므로 루프를 사용해야 함)
for fruit in fruits:
print(fruit)
3.3 집합 메소드
집합은 다양한 메소드를 제공하여 데이터를 조작할 수 있습니다.
# 새로운 요소 추가
fruits.add("orange")
print(fruits) # {'apple', 'banana', 'cherry', 'orange'}
# 기존 요소 제거
fruits.remove("banana")
print(fruits) # {'apple', 'cherry', 'orange'}
# 집합 합집합
fruits2 = {"kiwi", "banana"}
all_fruits = fruits.union(fruits2)
print(all_fruits) # {'apple', 'cherry', 'orange', 'banana', 'kiwi'}
# 집합 교집합
common_fruits = fruits.intersection(fruits2)
print(common_fruits) # set() (공통 요소가 없음)
3.4 집합 활용 예제
집합을 활용하여 두 집합의 교집합, 합집합 등을 구하는 예제를 작성해보겠습니다.
# 두 과목을 수강하는 학생들의 집합
math_students = {"철수", "영희", "민수"}
science_students = {"영희", "지민", "민수"}
# 합집합 (둘 중 하나라도 수강하는 학생)
all_students = math_students.union(science_students)
print(all_students) # {'철수', '영희', '민수', '지민'}
# 교집합 (두 과목 모두 수강하는 학생)
common_students = math_students.intersection(science_students)
print(common_students) # {'영희', '민수'}
# 차집합 (수학만 수강하는 학생)
math_only_students = math_students.difference(science_students)
print(math_only_students) # {'철수'}
# 차집합 (과학만 수강하는 학생)
science_only_students = science_students.difference(math_students)
print(science_only_students) # {'지민'}
4. 딕셔너리와 집합 비교
딕셔너리와 집합은 각각의 장점이 있으며, 다양한 상황에서 유용하게 사용됩니다. 딕셔너리는 키-값 쌍으로 데이터를 저장하고, 특정 키를 통해 빠르게 값에 접근할 수 있습니다. 반면, 집합은 중복되지 않는 요소들의 모음으로, 수학적 집합 연산을 효율적으로 수행할 수 있습니다.
특성 | 딕셔너리 | 집합 |
---|---|---|
기본 구조 | 키-값 쌍 | 중복되지 않는 요소들의 모음 |
접근 방식 | 키를 통해 값에 접근 | 요소를 직접 접근 |
변경 가능성 | 변경 가능 | 변경 가능 |
주요 용도 | 데이터를 키-값 형태로 저장 | 중복되지 않는 요소들의 집합 |
메소드 | 다양한 메소드 제공 | 집합 연산 메소드 제공 |
5. 실습 예제
딕셔너리와 집합을 활용한 실습 예제를 작성해보겠습니다.
학생 성적 관리 프로그램
학생들의 이름과 성적을 관리하고, 특정 점수 이상인 학생들의 이름을 출력하는 프로그램을 작성해보겠습니다.
# 학생 성적 관리 딕셔너리
grades = {
"철수": 85,
"영희": 90,
"민수": 78,
"지민": 92
}
# 80점 이상인 학생들의 집합
high_scores = {name for name, score in grades.items() if score >= 80}
print(high_scores) # {'철수', '영희', '지민'}
6. 마무리
이번 포스팅에서는 Python의 딕셔너리와 집합에 대해 알아보았습니다. 딕셔너리는 키-값 쌍을 저장하여 데이터에 빠르게 접근할 수 있으며, 집합은 중복되지 않는 요소들을 저장하고 집합 연산을 효율적으로 수행할 수 있습니다. 이 두 데이터 구조를 적절히 활용하여 더 효율적인 코드를 작성해보세요.
이 포스팅이 Python을 처음 접하는 분들에게 도움이 되길 바랍니다.