Python 기초강의: #16 데이터 구조 - 딕셔너리(Dictonary)
이번 포스팅에서는 파이썬에서 정말 자주 활용되는 데이터 구조의 하나인 딕셔너리(Dictonary)에 대해 알아보도록 하겠습니다. 파이썬의 딕셔너리(Dictionary)는 매우 유용한 데이터 구조로, 키-값 쌍을 저장하는 데 사용됩니다. 마치 사전처럼 키를 통해 원하는 값을 빠르고 효율적으로 찾아낼 수 있다는 장점이 있습니다. 딕셔너리는 키를 사용해 데이터를 빠르게 검색할 수 있으며, 키는 고유해야 합니다. 이번 포스팅에서는 파이썬 딕셔너리의 개념, 특징, 주요 메소드 및 활용 예제를 통해 딕셔너리를 자세히 살펴보겠습니다.
딕셔너리는 다양한 데이터를 저장하고 관리하는데 유용하며, 웹 개발, 데이터 분석, 머신 러닝 등 실무 분야에서 널리 활용됩니다. 따라서, 오늘 포스팅은 천천히 이해하면서 잘 읽어주셨으면 좋겠습니다.
1. 딕셔너리란 무엇인가?
딕셔너리는 키-값 쌍을 저장하는 데이터 구조로, 중괄호 {} 또는 dict()함수로 선언합니다. 각 키는 고유해야 하며, 값은 중복될 수 있습니다. 키는 변경 불가능한 데이터 타입(예: 문자열, 숫자, 튜플)이어야 합니다.
- 키: 각 값을 식별하는 고유한 이름입니다. 문자열, 숫자, 심지어 다른 딕셔너리까지 키로 사용할 수 있습니다.
- 값: 키와 연관된 실제 데이터입니다. 숫자, 문자열, 리스트, 튜플 등 다양한 데이터형을 값으로 저장할 수 있습니다.
2. 딕셔너리의 특징
키-값 쌍 저장: 딕셔너리는 각 키에 대해 하나의 값을 저장합니다.
키는 고유함: 딕셔너리의 각 키는 고유해야 하며, 중복될 수 없습니다.
변경 가능함 (Mutable): 딕셔너리의 키-값 쌍은 추가, 수정, 삭제가 가능합니다.
빠른 검색 속도: 키를 사용하여 값을 빠르게 검색할 수 있습니다.
3. 딕셔너리 생성 및 기본 사용법
딕셔너리 생성
딕셔너리는 중괄호 {}또는 dict()함수를 사용하여 생성하며, 콜론 :을 사용하여 키와 값을 구분합니다.
# 빈 딕션너리 생성
empty = {} # or dict()
# 딕셔너리 생성
person = {"name": "Alice", "age": 25, "city": "New York"}
# 빈 딕셔너리 생성
empty_dict = {}
딕셔너리 요소 접근
딕셔너리의 값은 키를 사용하여 접근할 수 있습니다.
person = {"name": "Alice", "age": 25, "city": "New York"}
print(person["name"]) # 'Alice' 출력
print(person["age"]) # 25 출력
딕셔너리 요소 수정
딕셔너리의 값은 키를 사용하여 수정할 수 있습니다.
person = {"name": "Alice", "age": 25, "city": "New York"}
person["age"] = 30
print(person) # {'name': 'Alice', 'age': 30, 'city': 'New York'} 출력
딕셔너리 요소 추가
새로운 키-값 쌍을 추가할 수 있습니다.
person = {"name": "Alice", "age": 25}
person["city"] = "New York"
print(person) # {'name': 'Alice', 'age': 25, 'city': 'New York'} 출력
딕셔너리 요소 삭제
키를 사용하여 요소를 삭제할 수 있습니다.
person = {"name": "Alice", "age": 25, "city": "New York"}
del person["age"]
print(person) # {'name': 'Alice', 'city': 'New York'} 출력
4. 주요 딕셔너리 메소드
keys()
keys() 메소드는 딕셔너리의 모든 키를 반환합니다. 키를 알 수 없는 딕셔너리로부터 키 정보를 확인할 때 유용합니다.
person = {"name": "Alice", "age": 25, "city": "New York"}
print(person.keys()) # dict_keys(['name', 'age', 'city']) 출력
values()
values() 메소드는 딕셔너리의 모든 값을 반환합니다.
person = {"name": "Alice", "age": 25, "city": "New York"}
print(person.values()) # dict_values(['Alice', 25, 'New York']) 출력
items()
items() 메소드는 딕셔너리의 모든 키-값 쌍을 반환합니다.
person = {"name": "Alice", "age": 25, "city": "New York"}
print(person.items()) # dict_items([('name', 'Alice'), ('age', 25), ('city', 'New York')]) 출력
get()
get() 메소드는 지정한 키에 대응하는 값을 반환하며, 키가 존재하지 않을 경우 기본값을 반환합니다. 딕셔너리에 대한 접근은 대괄호 []에 키를 입력하는 방식으로 하지만 키가 없는 경우 에러를 일으킵니다. get 함수를 사용하면 에러를 반환하지 않기 때문에 안전한 프로그램이 될 수 있습니다.
person = {"name": "Alice", "age": 25}
print(person.get("name")) # 'Alice' 출력
print(person.get("city", "Unknown")) # 'Unknown' 출력
update()
update() 메소드는 다른 딕셔너리의 키-값 쌍을 추가하거나 업데이트합니다.
person = {"name": "Alice", "age": 25}
additional_info = {"city": "New York", "job": "Engineer"}
person.update(additional_info)
print(person) # {'name': 'Alice', 'age': 25, 'city': 'New York', 'job': 'Eng
5. 딕셔너리의 활용 예제
예제 1: 학생 성적 저장 및 평균 계산
딕셔너리를 사용하여 학생의 성적을 저장하고 평균 성적을 계산하는 예제입니다. 내장함수인 sum()과 len()을 이용하여 쉽게 평균을 계산할 수 있습니다.
grades = {"Alice": 85, "Bob": 92, "Charlie": 78}
average = sum(grades.values()) / len(grades)
print(average) # 85.0 출력
예제 2: 단어 빈도수 세기
문자열에서 각 단어의 빈도수를 계산하는 예제입니다. split 함수를 이용하여 문자열을 분해합니다. 분해된 문자열을 반복문을 통해 확인하면서 해당 문자열을 키로 하고 빈도수를 값으로 하는 딕셔너리를 생성합니다. 키가 없다면 새로운 키-값 쌍이 만들어지며 키가 있다면 값에 해당하는 빈도수를 1 올립니다.
text = "hello world hello"
words = text.split()
word_count = {}
for word in words:
if word in word_count:
word_count[word] += 1
else:
word_count[word] = 1
print(word_count) # {'hello': 2, 'world': 1} 출력
예제 3: 딕셔너리를 사용한 조건부 연산
딕셔너리를 사용하여 조건에 따라 다른 값을 반환하는 예제입니다. 딕셔너리 키에 해당하는 값을 할인율로 부여하여 조건에 따라 적용되도록 프로그래밍할 수 있습니다. 이 예제를 활용하여 다양한 조건을 빠르게 처리하는 코드를 효율적으로 만들 수 있습니다.
def get_discount(price, is_vip):
discounts = {True: 0.2, False: 0.1}
return price * (1 - discounts[is_vip])
print(get_discount(100, True)) # 80.0 출력 (20% 할인)
print(get_discount(100, False)) # 90.0 출력 (10% 할인)
결론
파이썬의 딕셔너리는 키-값 쌍을 저장하고 조작하는 데 매우 유용한 데이터 구조입니다. 딕셔너리를 사용하면 데이터를 효율적으로 저장하고 검색할 수 있으며, 다양한 메소드와 기능을 활용하여 복잡한 데이터 처리도 쉽게 할 수 있습니다. 딕셔너리의 특성과 사용 방법을 잘 이해하고 활용하여 더 효율적인 파이썬 프로그래밍이 가능합니다.
실제 실무에서는 딕셔너리가 정말 많이 활용됩니다. 키 값을 통해 접근하는 속도가 매우 빠르며 효과적이기 때문입니다. 그리고, 인공지능 등의 분야에서 데이터 구조로 많이 활용되고 있고 JSON과의 호환성이 뛰어나 딕셔너리를 이용한 파일 입출력도 자주 이용됩니다. 딕셔너리를 통해 여러분의 프로그래밍이 더 효율적으로 발전하길 바라겠습니다.
감사합니다!