2025-01-20T02:26:20
This commit is contained in:
136
doc/03_05_dict.md
Normal file
136
doc/03_05_dict.md
Normal file
@@ -0,0 +1,136 @@
|
||||
# 딕셔너리
|
||||
딕셔너리는 파이썬에서 **키(key)**와 **값(value)** 쌍으로 이루어진 데이터를 저장하는 자료형입니다. 마치 사전처럼 키를 통해 값을 찾아볼 수 있어 연관 배열이라고도 불립니다. 딕셔너리는 순서가 없고, 키는 중복될 수 없다는 특징이 있습니다.
|
||||
|
||||
- dict
|
||||
|
||||
딕셔너리는 키/값 형식의 자료형입니다. 중괄호(`{`, `}`)를 사용해서 표현합니다.
|
||||
|
||||
## 특징
|
||||
### 딕셔너리의 장점
|
||||
* 빠른 검색: 키를 이용하여 값을 빠르게 찾을 수 있습니다.
|
||||
* 유연성: 다양한 자료형을 키와 값으로 사용할 수 있습니다.
|
||||
* 동적: 실행 중에 키-값 쌍을 추가, 수정, 삭제할 수 있습니다.
|
||||
### 딕셔너리의 단점
|
||||
* 순서 보장 X: 딕셔너리는 순서가 없기 때문에 요소를 순서대로 접근하기 어렵습니다. 단, Python 3.6 이상에서는 순서가 유지됩니다.
|
||||
|
||||
## 딕셔너리 생성
|
||||
```python
|
||||
a = {'name': 'Charlie', 'age': 14}
|
||||
b = dict(name='Steve', age=37) # dict()를 사용할 때에는 키를 따옴표로 묶지 않습니다.
|
||||
|
||||
c = {} # 빈 딕셔너리를 만듭니다. 또는,
|
||||
d = dict()
|
||||
|
||||
e = dict(zip(['name', 'age'], ['Jane', 24])) # zip()을 사용해서 키와 값을 묶을 수도 있습니다.
|
||||
f = dict([('name', 'Olaf'), ('age', 7)]) # 리스트 안에 튜플을 사용해서 생성할 수도 있습니다.
|
||||
g = dict({'name': 'Charlie', 'age': 14}) # dict() 안에 중괄호를 한 번 더 사용해도 됩니다.
|
||||
```
|
||||
|
||||
## 딕셔너리 요소 접근
|
||||
딕셔너리의 키에 대괄호를 사용해서 아이템에 접근하거나 변경할 수 있습니다.
|
||||
|
||||
```python
|
||||
person = {'name': 'Charlie', 'age': 14}
|
||||
person['name'] # 'Charlie'
|
||||
|
||||
person.get('name') # get() 메서드를 사용할 수도 있습니다.
|
||||
```
|
||||
|
||||
`in` 연산자를 사용해서 딕셔너리에 해당 키가 존재하는지 확인할 수 있습니다.
|
||||
|
||||
```python
|
||||
person = {'name': 'Charlie', 'age': 14}
|
||||
if 'name' in person:
|
||||
print(person['name'])
|
||||
else:
|
||||
print("정보가 없습니다.")
|
||||
```
|
||||
|
||||
키의 갯수를 알고 싶으면 `len()`을 사용합니다.
|
||||
|
||||
```python
|
||||
len({'name': 'Charlie', 'age': 14}) # 2
|
||||
```
|
||||
|
||||
## 딕셔너리 요소 추가, 수정, 삭제
|
||||
|
||||
```python
|
||||
# 새로운 키-값 쌍 추가
|
||||
student['address'] = '서울시'
|
||||
|
||||
# 값 수정
|
||||
student['age'] = 21
|
||||
|
||||
# 키 삭제
|
||||
del student['score'] # 키를 제거하려면 `del`을 사용합니다.
|
||||
```
|
||||
|
||||
딕셔너리를 복제하려면 `deepcopy()`를 사용해야 합니다.
|
||||
|
||||
```python
|
||||
import copy
|
||||
y = deepcopy(a)
|
||||
```
|
||||
|
||||
## 딕셔너리의 메서드
|
||||
|
||||
- setdefault(키, 값)
|
||||
|
||||
키에 대한 기본값을 지정합니다. `update()`와 달리 해당 키가 이미 정의되어 있다면 값이 변경되지 않습니다.
|
||||
|
||||
- update(키, 값)
|
||||
|
||||
키에 대한 값을 변경합니다. 키가 정의되어 있지 않다면 새로운 키가 등록됩니다.
|
||||
|
||||
- pop(키, 기본값)
|
||||
|
||||
키에 대한 값을 반환하며, 딕셔너리에서는 제거됩니다. 매개변수에 기본값을 주면 해당 키가 없을 때에 그 값을 반환합니다.
|
||||
|
||||
- popitem()
|
||||
|
||||
마지막 키/값 쌍을 튜플로 반환하고 삭제합니다. Python 3.5 이하에서는 임의의 키/값 쌍을 반환합니다.
|
||||
|
||||
- clear()
|
||||
|
||||
모든 키/값 쌍을 삭제합니다.
|
||||
|
||||
- get(키) : 키에 해당하는 값을 반환하고, 키가 없으면 기본값을 반환합니다.
|
||||
|
||||
- items() : 키-값 쌍을 튜플 형태로 반환합니다.
|
||||
|
||||
- keys() : 모든 키를 반환합니다.
|
||||
|
||||
- values() : 모든 값을 반환합니다.
|
||||
|
||||
|
||||
```python
|
||||
for key, value in {'a':100, 'b':200, 'c':300}.items():
|
||||
print(key, value)
|
||||
```
|
||||
|
||||
```python
|
||||
# 학생들의 점수 저장
|
||||
scores = {'수학': 90, '영어': 85, '과학': 95}
|
||||
|
||||
# 모든 과목의 점수 출력
|
||||
for subject, score in scores.items():
|
||||
print(f"{subject}: {score}점")
|
||||
|
||||
# 평균 점수 계산
|
||||
total = sum(scores.values())
|
||||
average = total / len(scores)
|
||||
print(f"평균 점수: {average}점")
|
||||
```
|
||||
|
||||
## 멀티 레벨 딕셔너리
|
||||
|
||||
딕셔너리 안에 딕셔너리를 넣으면 계층형 데이터 구조를 만들 수 있습니다.
|
||||
|
||||
```python
|
||||
a = {
|
||||
'charlie': {'name': 'Charlie', 'age': 14},
|
||||
'steve': {'name': 'Steve', 'age': 37},
|
||||
'jane': {'name': 'Jane', 'age': 22}
|
||||
}
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user