파이썬 딕셔너리(Dictionary) 기초: 키, 값, 접근 방법
이전 페이지 다음 페이지
각 키는 콜론(:)으로 값과 구분되고, 항목들은 쉼표로 구분되며, 전체는 중괄호로 감싸집니다. 항목이 없는 빈 딕셔너리는 두 중괄호로 작성합니다: {}.
키는 딕셔너리 내에서 고유해야 하지만 값은 중복될 수 있습니다. 딕셔너리의 값은 어떤 타입이든 될 수 있지만, 키는 문자열, 숫자, 튜플 같은 불변 데이터 타입이어야 합니다.
딕셔너리 값 접근
딕셔너리 요소에 접근하려면 익숙한 대괄호와 키를 사용하여 값을 얻으세요. 간단한 예제는 다음과 같습니다.
Live Demo
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print "dict['Name']: ", dict['Name']
print "dict['Age']: ", dict['Age']
위 코드를 실행하면 다음 결과가 생성됩니다.
dict['Name']: Zara
dict['Age']: 7
딕셔너리의 일부가 아닌 키로 데이터 항목에 접근하려 하면 다음과 같은 오류가 발생합니다.
Live Demo
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print "dict['Alice']: ", dict['Alice']
위 코드를 실행하면 다음 결과가 생성됩니다.
dict['Alice']:
Traceback (most recent call last):
File "test.py", line 4, in <module>
print "dict['Alice']: ", dict['Alice'];
KeyError: 'Alice'
딕셔너리 업데이트
새 항목이나 키-값 쌍을 추가하거나, 기존 항목을 수정하거나, 기존 항목을 삭제하여 딕셔너리를 업데이트할 수 있습니다. 간단한 예제는 다음과 같습니다.
Live Demo
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
dict['Age'] = 8; # 기존 항목 업데이트
dict['School'] = "DPS School"; # 새 항목 추가
print "dict['Age']: ", dict['Age']
print "dict['School']: ", dict['School']
위 코드를 실행하면 다음 결과가 생성됩니다.
dict['Age']: 8
dict['School']: DPS School
딕셔너리 요소 삭제
개별 딕셔너리 요소를 제거하거나 딕셔너리 전체 내용을 지울 수 있습니다. 단일 연산으로 전체 딕셔너리를 삭제할 수도 있습니다.
전체 딕셔너리를 명시적으로 제거하려면 del 문을 사용하세요. 간단한 예제는 다음과 같습니다.
Live Demo
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
del dict['Name']; # 'Name' 키를 가진 항목 제거
dict.clear(); # 딕셔너리 모든 항목 제거
del dict; # 전체 딕셔너리 삭제
print "dict['Age']: ", dict['Age']
print "dict['School']: ", dict['School']
다음 결과가 생성됩니다. del dict 후 딕셔너리가 더 이상 존재하지 않으므로 예외가 발생합니다.
dict['Age']:
Traceback (most recent call last):
File "test.py", line 8, in <module>
print "dict['Age']: ", dict['Age'];
TypeError: 'type' object is unsubscriptable
참고 - del() 메서드는 이후 섹션에서 다룹니다.
딕셔너리 키의 속성
딕셔너리 값에는 제한이 없습니다. 표준 객체나 사용자 정의 객체 등 임의의 파이썬 객체가 될 수 있습니다. 그러나 키에는 동일하지 않습니다.
딕셔너리 키에 대해 기억해야 할 두 가지 중요한 점이 있습니다.
(a) 키당 하나 이상의 항목 허용 안 함. 즉, 중복 키 불가. 할당 중 중복 키가 발견되면 마지막 할당이 승. 예를 들어:
Live Demo
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'}
print "dict['Name']: ", dict['Name']
위 코드를 실행하면 다음 결과가 생성됩니다.
dict['Name']: Manni
(b) 키는 불변이어야 함. 즉, 문자열, 숫자, 튜플을 딕셔너리 키로 사용할 수 있지만 ['key'] 같은 것은 허용 안 됨. 간단한 예제:
Live Demo
#!/usr/bin/python
dict = {['Name']: 'Zara', 'Age': 7}
print "dict['Name']: ", dict['Name']
위 코드를 실행하면 다음 결과가 생성됩니다.
Traceback (most recent call last):
File "test.py", line 3, in <module>
dict = {['Name']: 'Zara', 'Age': 7};
TypeError: unhashable type: 'list'
내장 딕셔너리 함수 및 메서드
파이썬에는 다음 딕셔너리 함수가 포함되어 있습니다.
| 번호 | 함수 및 설명 |
| 1 | cmp(dict1, dict2)
두 딕셔너리의 요소 비교. |
| 2 | len(dict)
딕셔너리 전체 길이 반환. 이는 딕셔너리의 항목 수와 동일. |
| 3 | str(dict)
딕셔너리의 출력 가능한 문자열 표현 생성. |
| 4 | type(variable)
전달된 변수의 타입 반환. 전달된 변수가 딕셔너리면 딕셔너리 타입 반환. |
파이썬에는 다음 딕셔너리 메서드가 포함되어 있습니다.
| 번호 | 메서드 및 설명 |
| 1 | dict.clear()
딕셔너리 dict의 모든 요소 제거. |
| 2 | dict.copy()
딕셔너리 dict의 얕은 복사본 반환. |
| 3 | dict.fromkeys()
seq에서 키로, value로 값을 설정하여 새 딕셔너리 생성. |
| 4 | dict.get(key, default=None)
key 키에 대해 값 반환, 키가 없으면 default 반환. |
| 5 | dict.has_key(key)
키가 딕셔너리 dict에 있으면 true, 없으면 false 반환. |
| 6 | dict.items()
dict의 (키, 값) 튜플 쌍 리스트 반환. |
| 7 | dict.keys()
딕셔너리 dict의 키 리스트 반환. |
| 8 | dict.setdefault(key, default=None)
get()과 유사하지만 key가 dict에 없으면 dict[key]=default 설정. |
| 9 | dict.update(dict2)
딕셔너리 dict2의 키-값 쌍을 dict에 추가. |
| 10 | dict.values()
딕셔너리 dict의 값 리스트 반환. |