[Python] 딕셔너리(Dictionary)
딕셔너리(Dictionary)
- 키(key)와 값(value)이 쌍을 이루어 저장되는 구조
# 딕셔너리 기본 구조
phone = {
"민지": "010-1111-1111",
"현우": "010-2222-2222",
"서연": "010-3333-3333"
}
딕셔너리의 필요성
- 모든 키에는 반드시 하나의 값이 연결되어 있음
- 순서는 중요하지 않음
- 키는 중복될 수 없고, 한 번 정하면 변경할 수 없음
- 하나의 키엔 하나의 값만
키와 값의 특징
- 키(Key)의 특징
- 중복될 수 없음
- 같은 이름의 키를 두 번 사용하면, 마지막 값만 저장
- 변경할 수 없는 데이터만 키가 될 수 있음
- 즉, 문자열, 숫자, 튜플은 키로 사용 가능
- 리스트나 딕셔너리는 키로 사용할 수 없음
- 값(value)의 특징
- 어떤 종류의 데이터든 저장 가능
- 중복 가능
- 변경 가능
딕셔너리 만들기
- 중괄호{} 안에 키와 값을 콜론:으로 구분해서 입력하여 생성
- 여러 개의 키-값 쌍은 쉼표,로 구분
1) 빈 딕셔너리를 만들고 추가하기
- 처음에는 비어있는 딕셔너리를 만들고, 필요할 때마다 하나씩 데이터를 추가하는 방법
my_dict = {}
my_dict["이름"] = "파이썬"
my_dict["나이"] = 30
my_dict["취미"] = "코딩"
print("내 정보:", my_dict)
# 결과 > 내 정보: {'이름': '파이썬', '나이': 30, '취미': '코딩'}
2) 데이터를 미리 넣어서 만들기
- 데이터를 알고 있을 때 주로 사용
- 한 번에 여러 데이터를 입력할 수 있음
fruit_prices = {
"사과": 1500,
"바나나": 3000,
"오렌지": 2000
}
print("과일 가격표:", fruit_prices)
# 결과 > 과일 가격표: {'사과': 1500, '바나나': 3000, '오렌지': 2000}
3) dict()를 통해 다른 자료형을 딕셔너리로 변환하기
- 이미 리스트나 튜플로 가지고 있는 데이터를 딕셔너리로 변환할 때 사용
# 리스트로 딕셔너리 만들기
pair_list = [['이름', '민지'], ['나이', 20], ['취미', '독서']]
person_info = dict(pair_list)
print("리스트로 만든 딕셔너리:", person_info)
# 튜플로 딕셔너리 만들기
grade_tuples = [('국어', 90), ('수학', 85), ('영어', 88)]
grade_info = dict(grade_tuples)
print("튜플로 만든 딕셔너리:", grade_info)
딕셔너리 데이터 접근하기
1) 대괄호 ‘[]’ 사용하기
- 대괄호 안에 찾고 싶은 키 입력
- 존재하지 않는 키를 입력하면 오류 발생 (KeyError)
- 해당 키가 반드시 있어야 하는 경우 또는 키가 없으면 오류를 발생시키고 싶은 경우 등에 사용
2) get() 메서드 사용하기
- 대괄호 사용보다 더 안전한 방법
- 찾는 키가 없어도 오류가 발생하지 않고, 기본값 지정이 가능
- 해당 키가 있을 수도 있고 없을 수도 있는 경우, 키가 없을 때 기본값을 사용하고 싶은 경우, 안전하게 값을 가져오고 싶은 경우 등에 사용
# 학생의 성적 정보
scores = {
"민지": 95,
"현우": 88,
"서연": 92
}
# get() 메서드로 값 가져오기
print(f"민지의 점수: {scores.get('민지')}") # 95
print(f"현우의 점수: {scores.get('현우')}") # 88
print(f"철수의 점수: {scores.get('철수')}") # None
print(f"영희의 점수: {scores.get('영희', 0)}") # 0 (기본값 지정)
딕셔너리 활용
딕셔너리 데이터 추가와 수정
딕셔너리이름[새로운키] = 값
- 여러 데이터를 한 번에 추가하거나 수정하려면
update()를 사용
# 세일 기간 가격 수정하기
fruits = {"사과": 1000, "바나나": 2000}
print("세일 전 가격:", fruits)
# 세일 가격으로 한번에 수정하기
fruits.update({
"사과": 800, # 사과 가격 할인
"바나나": 1500, # 바나나 가격 할인
"오렌지": 1000 # 새로운 할인 과일 추가
})
print("세일 가격 적용 후:", fruits)
딕셔너리 데이터 삭제하기
🗑️ del 명령어로 삭제하기
- 가장 기본적인 삭제 방법
- 원하는 키의 데이터를 바로 삭제할 수 있음
- 존재하지 않는 키를 삭제하려고 하면 오류 발생
phone= {
"준혁": "010-1111-1111",
"민지": "010-2222-2222",
"서현": "010-3333-3333",
"남자친구": "010-4444-4444"
}
print("삭제 전:", phone)
del phone["남자친구"] # 남자친구 번호 삭제
print("삭제 후:", phone)
✂️ pop() 메서드로 삭제하기
- 데이터를 삭제하면서 동시에 삭제한 값을 가져옴
- 삭제하려는 키가 없을 때 반환하는 값 지정 가능
# 남자친구 번호를 삭제하면서 동시에 그 값을 변수에 저장
ex_phone_num = phone.pop("남자친구")
print("삭제된 남자친구 번호:", ex_phone_num)
print("현재 연락처:", phone)
# 없는 번호 삭제 시도하기
minsu_phone_num = phone.pop("민수", "없음") # 민수 번호가 없으면 "없음" 반환
print("삭제된 민수 번호:", minsu_phone_num)
🧹 clear() 메서드로 모두 삭제하기
- 딕셔너리의 모든 데이터를 일괄 삭제
phone.clear()
딕셔너리 메서드 활용
🔑 keys()
- 딕셔너리의 모든 키(key)를 가져옴
- 반복문과 함께 사용하면 모든 키를 하나씩 처리할 수 있음
fruits = {"사과": 1000, "바나나": 2000, "오렌지": 1500}
# 모든 과일 이름(키) 가져오기
fruit_names = fruits.keys()
print("과일 목록:", fruit_names)
# for문으로 하나씩 출력하기
for fruit in fruits.keys():
print(f"과일 이름: {fruit}")
- 결과
과일 목록: dict_keys([‘사과’, ‘바나나’, ‘오렌지’])
과일 이름: 사과
과일 이름: 바나나
과일 이름: 오렌지
💎 values()
- 딕셔너리의 모든 값(value)을 가져옴
- 마찬가지로 반복문과 함께 사용하면 모든 값을 하나씩 처리할 수 있음
- 값들의 합계나 평균 등을 구할 때 유용하게 사용
- 값들이 숫자일 경우,
sum(),max(),min()등의 함수를 이용하여 쉽게 계산 가능
# 모든 가격(값) 가져오기
prices = fruits.values()
print("가격 목록:", prices)
print("전체 가격 합계:", sum(prices)) # sum() 함수로 합계 구하기
- 결과
가격 목록: dict_values([1000, 2000, 1500])
전체 가격 합계: 4500
🎲 items()
- 딕셔너리의 키와 값을 쌍으로 모두 가져옴
- 반복문으로 접근 가능
# 과일과 가격을 함께 출력하기
for name, price in fruits.items():
print(f"{name}의 가격: {price}원")
- 결과
사과의 가격: 1000원
바나나의 가격: 2000원
오렌지의 가격: 1500원
Leave a comment