파이썬의 기본 자료 구조인 리스트
, 튜플
, 딕셔너리
를 확장시킨 컨테이너 타입들의 구현체.
from collections import deque
from collections import Counter
from collections import OrderedDict
from collections import defaultdict
from collections import namedtuple
대소문자 주의!
double-ended-queue의 약자로, 양방향에서 데이터를 처리할 수 있는 자료구조다.
대부분의 메소드가 list와 유사하다.
append(item)
: item을 데크의 오른쪽 끝에 삽입한다.
appendleft(item)
: item을 데크의 왼쪽 끝에 삽입한다.
pop()
: 데크의 오른쪽 끝 엘리먼트를 가져오는 동시에 데크에서 삭제한다.
popleft()
: 데크의 왼쪽 끝 엘리먼트를 가져오는 동시에 데크에서 삭제한다.
extend(array)
: 주어진 배열(array)을 순환하면서 데크의 오른쪽에 추가한다.
extendleft(array)
: 주어진 배열(array)을 순환하면서 데크의 왼쪽에 추가한다.
remove(item)
: item을 데크에서 찾아 삭제한다.
rotate(num)
: 데크를 num만큼 회전한다(양수면 오른쪽, 음수면 왼쪽).
from collections import Counter
scores = ['A', 'B', 'B', 'C', 'C', 'D', 'A']
counter = Counter(scores)
print(counter)
# Counter({'A':2, 'B':2, 'C':2, 'D':1})
파라미터 내부의 각 원소가 몇 번 나오는지 Dictionary 형태로 반환한다.
score2 = ['C', 'D']
counter.update(score2)
print(counter)
# Counter({'C':3, 'A':2, 'B':2, 'D':2})
Counter의 값을 갱신한다.
list(counter.elements())
#['A','A','B','B','C','C','C','D','D']
Counter 요소를 무작위 순서로 반환한다.
counter.most_common(2)
#[('C',3),('A',2)]
입력된 수만큼의 순위를 tuple 형태로 리턴한다.
counter.subtract(score2)
print(counter)
# Counter({'A':2, 'B':2, 'C':2, 'D':1})
해당하는 요소를 빼준다.
순서가 유지되는 dictionary.
python 3.6
이후부터는 기본 dictionary도 OrderedDict와 같은 기능을 가진다.
from collections import defaultdict
d1 = defaultdict(int) # default : 0
d2 = defaultdict(set) # default : 빈 set
d3 = defaultdict(list) # default : 빈 list
d4 = defaultdict(dict) # default : 빈 dict
d5 = defaultdict(lambda: '123') # default : 123
dictionary에서 검색한 key가 존재하지 않을 경우 KeyError가 발생하는 단점을 보완한 객체.
존재하지 않는 key를 접근하면 default로 설정된 값이 나온다.
index를 기준으로 접근하는 기존 tuple에 key(name)으로 접근하는 방식을 추가한 tuple.
from collections import namedtuple
Book = namedtuple('Book', ['title', 'price'])
mybook = Book("파이썬", 20000)
print(mybook.title, mybook.price)