딕셔너리(Dictionary)는 데이터를 <Key, Value> 한 쌍의 형태로 저장하는 non-sequence한(순서가없는)
자료구조이다. Key 값을 인덱스로 사용하여 데이터를 저장하기 때문에 키 값을 통해 데이터에 빠르게
접근할 수 있다.
선언
my_dict = { }
my_dict2 = {'red':1, 'blue':2, 'green':3}
print(my_dict) # 실행결과 : {}
print(my_dict2) # 실행결과 : {'red': 1, 'blue': 2, 'green': 3}
my_tuple = (('red', 1), ('blue', 2), ('green', 3))
my_dict3 = dict(my_tuple)
print(my_dict3) # 실행결과 : {'red': 1, 'blue': 2, 'green': 3}
딕셔너리는 중괄호 안에 key, value 를 콜론(:)으로 구분하여 나열하거나 dict() 메소드에 key,value 형태의 데이터들을 가진 map 또는 iterable한 인스턴스를 인자로 넘겨 생성 가능하다. (튜플, 리스트, 딕셔너리 등)
참조
my_dict = {'red':1, 'blue':2, 'green':3}
print(my_dict['red']) # 실행결과 : 1
print(my_dict.get('red')) # 실행결과 : 1
딕셔너리의 데이터 참조는 <딕셔너리>[참조할_KEY값] 또는 <딕셔너리>.get(<참조할_KEY값>) 메소드의
호출을 통해 가능하다. get 메소드의 경우 추가인자로 default값을 줄 수 있는데, 이는 딕셔너리에 찾으려는
Key 값이 없을 경우 반환할 값을 의미한다. 지정하지 않을 경우 None으로 설정되어있다.
삽입
my_dict = {'red':1, 'blue':2, 'green':3}
my_dict['black'] = 0
print(my_dict) # 실행결과 : {'red': 1, 'blue': 2, 'green': 3, 'black': 0}
딕셔너리의 데이터 삽입은 <딕셔너리>[추가할_KEY값] = [추가할_VALUE값] 의 형태로 이루어진다.
딕셔너리는 삽입 순서를 보장하기 때문에 출력 시 Key, Value 쌍은 삽입한 순서대로 보여진다.
삭제
my_dict = {'red':1, 'blue':2, 'green':3, 'white':4, 'orange':5}
del my_dict['red']
print(my_dict.pop('blue')) # 실행결과 : 2
print(my_dict.popitem()) # 실행결과 : {'orange': 5}
print(my_dict) # 실행결과 : {'green': 3, 'white': 4}
my_dict.clear()
print(my_dict) # 실행결과 : {}
딕셔너리의 데이터 삭제는 리스트와 동일하게 del 명령어를 사용한방법, clear 메소드를 통한 전체삭제가 가능하며 pop(<삭제할_KEY값>) 메소드의 호출로 특정 키값을 비복원 추출 형태로 삭제 가능하다.
스택처럼 마지막에 삽입된 데이터쌍을 삭제/반환하고 싶을 경우 popitem() 메소드를 사용 가능하다.
pop 메소드의 경우 삭제 후 value만을 반환하지만 popitem 메소드의 경우 key, value쌍을 반환한다.
기타 메소드
1. <KEY> in <딕셔너리>
my_dict = {'red':1, 'blue':2, 'green':3}
print('red' in my_dict) # 실행결과 : True
print('red' not in my_dict) # 실행결과 : False
<KEY> in <딕셔너리> 연산은 <딕셔너리>에 저장된 키 값에 <KEY>가 존재하는지 여부를 논리형으로 반환
not in 연산의 경우 in 연산의 반대의 결과를 반환
2. list(<딕셔너리>)
my_dict = {'red':1, 'blue':2, 'green':3}
list_form_my_dict = list(my_dict)
print(list_form_my_dict) # 실행결과 : ['red', 'blue', 'green']
list 메소드에 딕셔너리를 인자로 넘길 경우 딕셔너리에 저장된 key 값들을 리스트화하여 반환한다. value, 또는
<key, value>쌍의 형태로 리스트화 하고싶다면 각각의 뷰 객체를 반환하는 <딕셔너리>.values(), <딕셔너리>.items()을
인자로넘겨야 한다.
3. reverse(<딕셔너리>)
my_dict = {'red':1, 'blue':2, 'green':3}
print(list(reversed(my_dict))) # 실행결과 : ['green', 'blue', 'red']
reverse 메소드에 딕셔너리를 인자로 넘길 경우 딕셔너리에 저장된 key 값들의 역순 이터레이터를 반환한다.
list 메소드와 마찬가지로 value나 <key, value>쌍의 형태로 역순 이터레이터를 얻고싶다면 <딕셔너리>.values(),
<딕셔너리>.items()을 인자로넘겨야 한다.
'언어 > Python' 카테고리의 다른 글
#6 재귀 제한(recursion limit) (0) | 2021.04.05 |
---|---|
#5 집합(Set) (0) | 2021.03.02 |
#3 튜플(Tuple) (0) | 2021.02.24 |
#2 리스트(List) (0) | 2021.02.24 |
#1 기본적인 문법 (0) | 2021.02.23 |