[Python] 사전 자료형 생성 및 기본 사용법 (Python Dictionary : basic operations, access, delete)
Python 분석과 프로그래밍/Python 설치 및 기본 사용법 2017. 8. 27. 20:22다양한 다수의 데이터를 다룰 수 있는 파이썬의 자료형으로 리스트(List), 튜플(Tuple), 사전(Dictionary) 자료형이 있다고 했습니다.
그중에서 리스트와 튜플은 이전 포스팅에서 소개를 했구요, 이번 포스팅에서는 마지막으로 사전(Dictionary)에 대해서 알아보겠습니다.
사전(Dictionary) 자료형은 마치 영한사전이 {영어단어 : 한글 뜻} 과 같이 서로 짝꿍을 이루어서 구성이 되어있는 것처럼, {키(Key) : 값(Value)} 이 콜론( :, colon)으로 구분이 되어서 쌍(pair)을 이루고 있고, 중괄호( { }, curly braces)로 싸여져 있는 자료형입니다.
사전(Dictionary) 자료형의 키(Key)는 튜플처럼 변경 불가능(immutable)하고 유일한 값(unique)을 가지며, 값(Value)은 리스트처럼 변경이 가능(mutable) 합니다. 사전형은 키를 hashing (Dictionary as a Hash table type)해놓고 있다가 키를 사용하여 값을 찾으려고 하면 매우 빠른 속도로 값을 찾아주는 매우 효율적이고 편리한 자료형입니다.
[ 파이썬의 5가지 자료형 (Python's 5 Data Types) ]
1. 사전 {키 : 값} 생성: {Key1 : Value1, Key2 : Value2, ...} |
{Key : Value} 를 콜론(:)으로 구분해서 쌍을 이루어주며, 다수 개의 {Key:Value}를 하나의 사전에 묶으려면 콤마(,)로 구분해서 이어주고 중괄호({ }, curly braces) 로 싸주면 됩니다.
# making Dictionary with {Key1 : Value1, Key2 : Value2, ...} >>> dict_1 = {'name' : 'Python Friend', ... 'region' : 'Busan, Korea', ... 'phone' : '010-123-9876', ... 'age' : 30} >>> dict_1 {'name': 'Python Friend', 'region': 'Busan, Korea', 'phone': '010-123-9876', 'age': 30}
|
위의 예시처럼 한번에 {Key1 : Value1, Key2 : Value2, ...} 과 같이 키, 값 쌍을 한꺼번에 나열 할 수도 있구요, 아래의 예시처럼 먼저 { } 로 빈 사전 자료를 만들어놓은 다음에 dict[Key] = 'Value' 방식으로 하나씩 추가해나가는 방법도 있습니다.
# making a blank Dictionary { } first, and adding {Key : Value} pairs step by step using [Key] indexing >>> dict_2 = {} # blank Dictionary >>> dict_2['name'] = 'R Friend' >>> dict_2['region'] = 'Seoul, Korea' >>> dict_2['phone'] = '02-123-4567' >>> dict_2['age'] = 20 >>> dict_2 {'name': 'R Friend', 'region': 'Seoul, Korea', 'phone': '02-123-4567', 'age': 20}
|
2. 사전의 키 별 값 확인 (Accessing Values per Key in Dictionary): dict[Key] |
# Accessing Values per Key in Dictionary >>> dict_1 = {'name' : 'Python Friend', ... 'region' : 'Busan, Korea', ... 'phone' : '010-123-9876', ... 'age' : 30} >>> dict_1['name'] 'Python Friend' >>> dict_1['region'] 'Busan, Korea'
|
만약 사전(Dictionary)에 없는 키(Key)로 값(Value)을 확인하려고 하면 KeyError가 발생합니다.
# KeyError when there is no 'Key' in a Dictionary >>> dict_1 = {'name' : 'Python Friend', ... 'region' : 'Busan, Korea', ... 'phone' : '010-123-9876', ... 'age' : 30} >>> dict_1 {'name': 'Python Friend', 'region': 'Busan, Korea', 'phone': '010-123-9876', 'age': 30} >>> dict_1['address'] # KeyError due to no 'address' Key in dict_1 Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'address'
|
3. 사전 갱신 (Updating Dictionary) |
기존의 {키:값} 쌍의 값을 갱신하는 경우와, 새로운 {키:값} 쌍을 추가하는 방법이 있습니다.
# Updating Dictionary : (1) updating an existing entry, (2) adding a new entry >>> dict_1 = {'name' : 'Python Friend', ... 'region' : 'Busan, Korea', ... 'phone' : '010-123-9876', ... 'age' : 30} >>> >>> dict_1['name'] 'Python Friend' >>> dict_1['name'] = 'R Friend' # (1) updating an existing entry >>> dict_1['name'] 'R Friend' >>> >>> dict_1['gender'] = 'Male' # (2) Adding a new entry >>> dict_1 {'name': 'R Friend', 'region': 'Busan, Korea', 'phone': '010-123-9876', 'age': 30, 'gender': 'Male'}
|
4. 사전의 {키:값} 요소 삭제, 값 삭제, 사전 전체 삭제하기 (Deleting Dictionary Elements) : del statement, clear() method |
(4-1) 사전 자료형의 'Key'를 사용하여 특정 {Key : Value} 요소(entry) 제거 : del dict[Key]
(4-2) 사전 자료형의 모든 'Value' 제거 : dict.clear()
(4-3) 사전 자료형을 통째로 삭제 : del dict
# (4-1) Removing entry with key 'name' : del dict[Key} >>> dict_1 = {'name' : 'Python Friend', ... 'region' : 'Busan, Korea', ... 'phone' : '010-123-9876', ... 'age' : 30} >>> dict_1 {'name': 'Python Friend', 'region': 'Busan, Korea', 'phone': '010-123-9876', 'age': 30} >>> dict_1['name'] 'Python Friend' >>> del dict_1['name'] # remove entry with key 'name' >>> dict_1['name'] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'name' # (4-2) Removing all entries in dict using dict.clear() method >>> dict_1 = {'name' : 'Python Friend', ... 'region' : 'Busan, Korea', ... 'phone' : '010-123-9876', ... 'age' : 30} >>> dict_1 {'name': 'Python Friend', 'region': 'Busan, Korea', 'phone': '010-123-9876', 'age': 30} >>> dict_1.clear() >>> dict_1 {} # (4-3) Deleting entire dictionary using del statement >>> dict_1 = {'name' : 'Python Friend', ... 'region' : 'Busan, Korea', ... 'phone' : '010-123-9876', ... 'age' : 30} >>> dict_1 {'name': 'Python Friend', 'region': 'Busan, Korea', 'phone': '010-123-9876', 'age': 30} >>> del dict_1 >>> dict_1 Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'dict_1' is not defined
|
- 사전 자료형 키의 2가지 특징 (2 Properties of Dictionary Key)
5. 사전의 키 당 1개의 값 할당, 만약 사전의 키 중복 시 마지막 키의 값으로 할당 (In case of duplicate key in Dictionary, the last Value is assigned to the Key) |
# More than one entry per key not allowed # If keys are duplicated, then the last Value of Key will be assigned >>> dict_1 = {'name' : 'Python Friend', ... 'region' : 'Busan, Korea', ... 'phone' : '010-123-9876', ... 'age' : 30, ... 'name' : 'R Friend'} >>> dict_1 {'name': 'R Friend', 'region': 'Busan, Korea', 'phone': '010-123-9876', 'age': 30} >>> dict_1['name'] 'R Friend'
|
6. 사전의 키는 변경 불가 (Dictionary Keys must be immutable) : Strings, Numbers, Tuples 은 Key로 가능, |
사전의 키는 변경 불가능해야 합니다. 따라서 문자열(Strings), 숫자(Numbers), 튜플(Tuples) 가 사전의 키(Dictionary Key)로 활용 가능하며, 리스트(List)는 사전의 키로 사용 불가능합니다. 만약 리스트( [obj1, obj2, ... ] )를 사전의 키로 사용하려고 입력하면 TypeError: unhashable type: 'list' 라는 에러 메시지가 발생합니다.
# TypeError: unhashable type 'list' >>> dict_1 = {['name'] : 'Python Friend', ... 'region' : 'Busan, Korea', ... 'phone' : '010-123-9876', ... 'age' : 30} Traceback (most recent call last): File "<stdin>", line 4, in <module> TypeError: unhashable type: 'list'
|
다음번 포스팅에서는 파이썬 사전 자료형의 내장 함수와 메소드 (Python Dictionary built-in functions, methods)에 대해서 알아보겠습니다.
많은 도움이 되었기를 바랍니다.
이번 포스팅이 도움이 되었다면 아래의 '공감~'를 꾸욱 눌러주세요. ^^