Collections in Python
백준이나 프로그래머스에서 알고리즘 풀이를 보면 collections
모듈을 사용하는 것을 쉽게 볼 수 있다. 딕셔너리와 관련된 특수한 형태의 컨테이너 자료형인 defaultdict
, Counter
, OrderedDict
에 대해 알아보자.
defaultdict 객체
defaultdict 객체는 존재하지 않는 키를 조회할 경우, 에러 메시지를 출력하는 대신 디폴트 값을 기준으로 해당 키에 대한 딕셔너리 아이템을 생성해준다.
파이썬 내장 dict의 존재하지 않는 키에 값을 대입한다면 어떻게 될까?
a = {'A':1, 'B':2}
a['C'] += 1
# KeyError: 'C'
KeyError
가 발생한다.
defaultdict 객체를 사용하면 이러한 문제를 해결할 수 있다.
a = collections.defaultdict(int)
a['A'] = 5
a['B'] = 4
a['C'] += 1
print(a)
# output: defaultdict(<class 'int'>, {'A': 5, 'B': 4, 'C': 1})
Counter 객체
Counter 객체는 아이템에 대한 개수를 계산해 딕셔너리로 리턴하며, 다음과 같이 사용한다.
a = [1,2,3,4,5,5,5,6,6]
b = collections.Counter(a)
print(b)
# output: Counter({5: 3, 6: 2, 1: 1, 2: 1, 3: 1, 4: 1})
개수를 자동으로 계산해주기 때문에 매우 편리하며, 여러 분야에서 다양하게 활용된다. 그렇다면 Counter 객체에서 가장 빈도 수가 높은 요소는 어떻게 추출할까? most_common()
을 사용하면 된다.
b.most_common(2)
# output: [(5,3), (6,2)]
OrderedDict 객체
입력값을 부여할 경우 OrderedDict는 입력 그대로 순서가 유지된다. Python 3.7부터 기본 dict 자료형도 입력 순서가 보장된다.
a = collections.OrderedDict({'banana': 3, 'apple': 4})
print(a)
# output: OrderedDict([('banana': 3), ('apple': 4)])
Author And Source
이 문제에 관하여(Collections in Python), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jadon/python-Collections저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)