마음만은 한량 햄버거 메뉴
반응형

Collections 모듈


  • Counter
    • 컨테이너 내에 동일한 값의 자료 개수를 파악할 때 사용하는 객체로, 컨테이너를 생성하는 생성자다.
    • 결과를 사전형태로 리턴하며, 사전형태의 특성상 정렬되어있지 않다.
    • most_common 함수를 이용해 상위 n개의 시퀀스를 추출할 수 있다.

container = Counter()    # Counter 함수를 이용한 객체생성

for n in "aaabbc":

print( "%s : %d" %(n, container(n))


>>> a : 3

>>> b : 2

>>> c : 1

# most_common 함수 이용

container = Counter()

container.update("aaaaaabbbbbccccdddeee")


for item, cnt in container.most_common(2):

print( "%s : %d" %(item, cnt))


>>> a : 6

>>> b : 5

    • 산술, 집합연산이 가능하다.

ct3 = Counter(['a','b','c','b','d','a']) ct4 = Counter('aeroplane') print(ct3-ct4)    # 차집합

print(ct3+ct4)    # 합집합

print(ct3&ct4)    # 교집합

print("union", ct3|ct4)    # 유니온집합 => 합집합과 비슷하나, 중복이 있을 경우, 최대 값만 출력(합을 하지 않는다)


  • Defaultdict

    • Dict 관련 컨테이너를 초기화할 때 (생성할 때), key 값이 없으면 default 값을 반환한다.

    • 인자로 default_factory를 지정하지 않으면 없는 key값은 key error를 발생시킨다.

def default_factory(): return "aa" dic = collections.defaultdict(default_factory, n1 = 'hi') print(dic) >>> defaultdict(<function default_factory at 0x10670a950>, {'n1': 'hi'})

print(dic['n1']) >>> hi

print(dic['n2']) # 맞는 key값이 없으면 return된 값을 초기값으로 설정한다.

>>> aa


  • Deque(덱)

    • 양방향 큐

    • List형 컨테이너를 생성하며, 양방향 출입이 가능해 appendleft(), extendleft()와 같은 함수를 사용할 수 있다.

import collections deq = collections.deque("Hello Python") deq.extendleft('aa') print(deq)

>>> deque(['a', 'a', 'H', 'e', 'l', 'l', 'o', ' ', 'P', 'y', 't', 'h', 'o', 'n'])


deq.appendleft('bb') print(deq)

>>> deque(['bb', 'a', 'a', 'H', 'e', 'l', 'l', 'o', ' ', 'P', 'y', 't', 'h', 'o', 'n'])

※ append와 extend의 차이

      • append : Object를 맨 뒤에 추가한다.

      • extend : Iterable 객체의 Elements를 list에 append한다.

str1 = ['abc'] str1.append('dd')

print(str1)

>>> ['abc', 'dd']    # append

str1.extend('ee') print(str1)

>>> ['abc', 'dd', 'e', 'e']    # extend


  • NamedTuple

    • 인덱스로 value에 접근하는 기존의 tuple과 달리 NamedTuple은 key를 이용해 value에 접근할 수 있다.

    • dict 형태와 비슷하나 메모리 효율이 뛰어나다. 

Person = collections.namedtuple("Person", "name, age, gender")

aa = Person("LCW", 27, "남성")

bb = Person("KSA", 24, "여성")

print(aa)

>>> Person(name="LCW", age=27, gender="남성")

print(bb.name)

>>> KSA


  • OrderedDict
    • 자료의 순서를 기억하는 dict형 클래스
    • 자료의 값만으로 True/False를 구분하는 dict와 달리 OrderedDict는 순서까지 중요하다.

# Regular Dict

dic3 = {} dic3["서울"]="LG트윈스" dic3['대구']='삼성라이온즈' dic3['광주']='기아타이거즈' dic4 = {} dic4["서울"]="LG트윈스" dic4['광주']='기아타이거즈' dic4['대구']='삼성라이온즈'


# OrderedDict

dic5 = collections.OrderedDict() dic5["서울"]="LG트윈스" dic5['대구']='삼성라이온즈' dic5['광주']='기아타이거즈' dic6 = collections.OrderedDict() dic6['대구']='삼성라이온즈' dic6["서울"]="LG트윈스" dic6['광주']='기아타이거즈'

print(dic3==dic4)        # dict형 비교 >>> True

print(dic5==dic6)        # ordereddict형 비교

>>> False


Ps. 본 포스트는 인프런의 '파이썬으로 배우는 자료구조와 알고리즘' 강의 내용을 정리합니다.

반응형
블로그카우, 티스토리 애드센스 강의

웹 개발자가 알려주는 수익형 블로그 고속 성장 A to Z

댓글
위쪽 화살표
로딩바