문법 · Python · intermediate

자주 쓰는 표준: collections 맛보기

Counter, defaultdict로 풀이를 짧게 만드는 법.

배우기 · Python 문법 · 14분 · 6/9 · python · 표준라이브러리

이 트랙 목차 (9)
  1. 1. 들여쓰기·타입·변수: Python 기초
  2. 2. 조건·반복: if, for, while, range
  3. 3. 리스트·슬라이스·문자열
  4. 4. 딕셔너리·집합·컴프리헨션
  5. 5. 함수·기본인자·헬퍼 나누기
  6. 6. 자주 쓰는 표준: collections 맛보기
  7. 7. 예외 기초: try · except · 입력 가드
  8. 8. itertools 맛보기: chain · product · combinations
  9. 9. 정렬 key: 커스텀 비교

Counter

from collections import Counter
c = Counter("aab")
c.most_common(1)  # [('a', 2)]

빈도 문제에 해시맵을 직접 쓰기 전에 Counter를 떠올리세요.

defaultdict

from collections import defaultdict
g = defaultdict(list)
g[1].append(2)

그래프 인접 리스트·그룹핑에 유용합니다.

정렬 키

rows.sort(key=lambda x: (x[1], -x[0]))

튜플 키로 다중 기준 정렬이 쉽습니다.

언제 안 쓰나

한두 줄이면 내장 dict로 충분합니다. 문제 문구의 허용 범위를 확인하세요.

연습

아나그램·단어 빈도 계열을 Counter로 다시 풀어 길이를 비교해 보세요.

deque 맛보기

from collections import deque
q = deque([1, 2])
q.append(3)
q.popleft()

큐·BFS에 리스트 pop(0) 대신 씁니다.

한 줄

> 빈도=Counter, 그룹=defaultdict, 큐=deque.

체크리스트

  1. 빈도만? → Counter
  2. 키마다 리스트? → defaultdict(list)
  3. 앞/뒤 삽입 삭제가 잦은 큐? → deque
  4. import가 문제에서 막혀 있나?

표준을 쓰면 실수가 줄지만, 알고리즘 이해를 대체하지는 않습니다.

한 줄: Counter·defaultdict·deque로 보일러플레이트를 줄인다.

예: 그룹핑

from collections import defaultdict
buckets = defaultdict(list)
for word in words:
    buckets[''.join(sorted(word))].append(word)

아나그램 묶기에 바로 쓰입니다. 해시 원리 레슨과 함께 보면 좋습니다.

관련 짧은 원리

관련 문제