Additional Mapping

매일 공부(ML)·2022년 11월 13일
0

Fluent Python

목록 보기
16/130

딕셔너리와 집합

그 외 매핑형

defaultdict 이외에 표준 라이브러리의 collections 모듈에서 제공하는 여러 매핑형을 간단히 알아본다.

collections.OrderedDict

키를 삽입한 순서대로 유지함으로써 항목을 반복하는 순서를 에측할 수 있고, OrderDict의 popitem()메서드는 기본적으로 최근에 삽입한 항목을 꺼내기에, my_odict.popitem(last=True)형태로 호출하면 처음 삽입한 항목을 꺼낸다.


collections.ChainMap

매핑들의 목록을 담고 있으면 한꺼번에 모두 검색을 할 수 있고, 각 매핑을 차례대로 검색하여 그 중 하나에서라도 키가 검색이 되면 성공하기에 클래스는 내포된 범위를 지원하는 언어에서 각 범위를 하나의 매핑으로 표현하여 인터프리터를 구현하는 것에 유용하게 사용이 된다.

import builtins
pylookup = ChainMap(locals(), globals(), vars(builtins))

collections.Counter

모든 키에 정수형 카운터를 갖고 있는 매핑, 기존 키를 갱신하면 카운터가 늘어나고, 이 카운터는 해시 가능한 객체(키)나 한 항목이 여러 번 들어갈 수 있는 다중 집합에서 객체의 수를 세기 위해서 사용이 되고, Counter 클래스는 합계를 구하기 위한 +와 - 연산자를 구현하므로, n개의 가장 널리 사용된 항목과 그들의 카운터로 구성된 튜플의 리스트를 반환하는 most_common([n])등의 메서드를 제공한다.

ct = collections.Counter('abracadabra')
ct # Counter({'a':5, 'b':2, 'r':2, 'c':1, 'd':1})
ct.update('aaaaazzz')
ct #Counter({'a':10, 'z':3,'b':2, 'r':2, 'c':1, 'd':1})
ct.most_common(2) #[('a',10),('z',3)]
profile
성장을 도울 아카이빙 블로그

0개의 댓글