collections(deque, Counter, defaultdict)

Yun·2022년 3월 13일
0

python - objects & types

목록 보기
8/13

collections

  • This module implements specialized container datatypes - General purpose built-in containers(dict,list,set & tuple)이외의 container 데이터 타입 제공
  • deque
  • namedtuple()
  • ChainMap
  • Counter, OrderedDict, defaultdict
  • UserDict, UserList, UserString

deque(덱)

  • list-like container with fast appends and pops on either end
  • 이중 연결리스트 구조
  • 양방향 입출력에 O(1)의 시간복잡도
from collections import deque

# 덱 생성
q = deque()

q.append(n)  # 오른쪽에 삽입
q,appendleft(n) #왼쪽에 삽입

q.pop() # 오른쪽 요소 꺼내기
q.popleft() # 왼쪽요소 꺼내기

q.extend([4,5,6]) #  여러개 요소 삽입
q.extendleft([3,4,5]) # 여러개 요소 왼쪽에 삽입

q.reverse() # 배열 순서 뒤집기
q.rotate() # 원소 오른쪽으로 회전


q.remove(e) # 일치하는 요소 1개 제거

Counter

  • dict subclass for counting hashable objects
  • 원소별 개수를 값으로 하는 자료구조
  • iterable 객체(주로 리스트)를 생성자의 인자로 받음
  • 딕셔너리와 유사한 자료구조를 가짐
  • 딕셔너리처럼 keys(), values(), items(), update() 메서드 사용가능
from collections import Counter

scores = [ 'A','A','A','C','B','B','C','D']

cnt = Counter(scores) #  Counter({'A': 3, 'B': 2, 'C': 2, 'D': 1})
cnt['A'] # 3

cnt.elements() # 개별요소 반환 iterator 

cnt.update(['A','A' ]) # Counter({'A': 4, 'B': 3, 'C': 2, 'D': 1})

cnt.keys() # dict_keys(['A', 'B', 'C', 'D'])
cnt.values() # dict_values([4, 3, 2, 1])
cnt.items() # dict_items([('A', 4), ('B', 3), ('C', 2), ('D', 1)])

cnt.most_common(2) # 가장 value 가 큰 2개를 (k,v) 튜플로 이루어진 배열로 반환

cnt.most_common(1)[0][0]  # 가장 많이 나온 값
max(cnt,key=cnt.get)  # 가장 많이 나온 값

counter1 | counter2 # 합집합 공통key를 가진경우 큰값으로
coutner1 & counter2 # 교집합 공통key를 가진경우 작은값으로

defaultdict

  • dict subclass that calls a factory function to supply missing values
  • 기본값이 존재하는 딕셔너리
  • 특정 key로 접근할때 값이 없으면 기본값 생성
from collections import defaultdict

l_dict = defaultdict(list)  # 빈 리스트
s_dict = defaultdict(set) # 빈 집합
i_dict = defaultdict(int) # 정수 0
f_dict = defaultdict(float) # 실수 0.0

l_dict["key"].append(1)

References

profile
python 정리

0개의 댓글