data
를 저장 할 때 각 데이터를 구분 지을 수 있는 값과 함께 저장.Key
라고 한다.Key
- Value
쌍으로 data
를 관리한다.key
로 Value
를 검색하는 형태.>>> dict_a = {} # dict 생성
>>> type(dict_a)
<class 'dict'>
>>> dict_a = dict() # dict 생성
>>> type(dict_a)
<class 'dict'>
area_code = {"seoul":"02", "incheon":"032", "busan":"051"}
>>> area_code # dict type area_code 생성
{'seoul': '02', 'incheon': '032', 'busan': '051'}
>>> area_code.items() # dict items 전부 리턴.
dict_items([('seoul', '02'), ('incheon', '032'), ('busan', '051')])
>>> type(area_code.items()) # dict_items 객체
<class 'dict_items'>
>>> area_code.keys() # dict keys 만 리턴.
dict_keys(['seoul', 'incheon', 'busan'])
>>> type(area_code.keys()) # dict_keys 객체
<class 'dict_keys'>
>>> area_code.values() # dict_values 만 리턴.
dict_values(['02', '032', '051'])
>>> type(area_code.values()) # dict_values 객체
<class 'dict_values'>
>>> area_code["Daegu"] = "053" # dict item 추가 및 수정.
>>> area_code.items()
dict_items([('seoul', '02'), ('incheon', '032'), ('busan', '051'), ('Daegu', '053')])
>>> for area, num in area_code.items(): # unpacking
print(f"Key: {area}")
print(f"Value: {num}")
Key: seoul
Value: 02
Key: incheon
Value: 032
Key: busan
Value: 051
Key: Daegu
Value: 053
>>> "seoul" in area_code.keys() # key가 dict안에 있는지 확인.
True
딕셔너리(dict) 만들 때 주의 사항.
1. 중복되는Key
값을 설정하면 하나를 제외한 나머지Key : Value
쌍은 모두 무시된다.
2.list
는Key
로 쓸 수 없다. (값이 변할 수 있기 때문)
하지만,tuple
은Key
로 쓸 수 있다.
list
,tuple
,set
,dict
등 내장 컨테이너에 대한 대안을 제공하는 Python Built-In 확장 모듈.
- from collections import duque
- from collections import OrderedDict
- from collections import defaultdict
- from collections import Counter
- from collections import namedtuple
stack
과queue
를 지원하는 모듈.list
와 유사하지만,list
에 비해 빠른 자료 저장 방식을 지원한다.
(append
와pop
을 양쪽에서 거의 같은 O(1) 성능으로 지원함.)rotate
,reverse
등Linked List
의 특성을 지원한다.
주요 메소드.
my_deque.append(x)
my_deque.appendleft(x)
my_deque.extend(iterable)
my_deque.extendleft(iterable)
my_deque.rotate()
my_deque.pop()
my_deque.popleft()
항목이 추가된 순서를 기억하는
dict
서브 클래스
하지만, python 3.6부터는 dict
도 입력한 순서를 보장하므로,
이런게 있다는 것 정도만 알고 넘어가자.
dict
의value
에 기본(default) 값을 지정한다.
신규값 생셩시 또는 누락된 value에 값을 제공하기 위해 사용한다.
>>> from collections import defaultdict
>>> my_dict = defaultdict(lambda : 0)
>>> my_dict
defaultdict(<function <lambda> at 0x1011d6a60>, {})
>>> my_dict["key1"]
0
>>> my_dict.items()
dict_items([('key1', 0)])
sequence type
의data element
들의 개수를dict
형태로 반환함.
(해시 가능한 객체를 세기 위해 사용)
data element
가Key
로 저장되고, 개수가Value
로 저장됨.
>>> from collections import Counter
>>> my_alpha = "ABBCCCDDDDEEEEEFFFFFF"
>>> alpha_counter = Counter(my_alpha)
>>> alpha_counter.items()
dict_items([('A', 1), ('B', 2), ('C', 3), ('D', 4), ('E', 5), ('F', 6)])
# or
>>> exam_grade = ['A+', 'B', 'C+', 'A+', 'B+', 'B']
>>> grade_counter = Counter(exam_grade)
>>> grade_counter.items()
dict_items([('A+', 2), ('B', 2), ('C+', 1), ('B+', 1)])
data struct
를tuple
형태로 저장.
data struct
의 변수들을 사전에 지정해서 저장한다.
>>> from collections import namedtuple
>>> Point = namedtuple('Point', ['x', 'y'])
>>> p1 = Point(x = 20, y = 40)
>>> print(p1[0], p1[1])
20 40
>>> x1, y1 = p1 #unpacking
>>> print(x1, y1)
20 40