ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 딕셔너리 모듈 (defaultdict, Counter)
    프로그래밍 언어/Python 2021. 7. 15. 12:36

    오늘은 파이썬 알고리즘 인터뷰 책으로 코딩테스트 준비를 하던 중에 알고있지 못했던 좋은 정보를 정리하려고 한다.

     

    1) defaultdict

    defaultdict의 형태는 우리가 평소에 쓰던 딕셔너리와 같다.

    차이점은 딕셔너리는 딕셔너리 안에 존재하지 않은 키에 대한 값(value)를 출력한다거나 접근할 때 KeyError 메시지가 발생한다.

    <예제 코드 - 기본 딕셔너리>

    하지만, defaultdict객체를 사용하게 되면 딕셔너리 내에 존재하지 않는 키를 조회하면 디폴트 값을 기준으로 해당 키에 대한 딕셔너리 아이템을 생성해준다.

    (defaultdict을 사용하기 위해서는 collections를 import해줘야한다.)

    <예제 코드 - defaultdict>

    위와 같이 C라는 key에 value를 주지 않았어도 KeyError가 나오지 않고 default값인 0이 출력되는 것을 확인할 수 있다.

     

    이러한 defaultdict은 문자열이나 리스트를 순회하면서 요소값을 count해서 딕셔너리에 담을 때 보다 간결한 코드를 짤 수 있게 도와줄 수 있을 것이다.

    예를 들어 defaultdict을 쓰지 않은 코드를 먼저 보자.

    s= ['a', 'b', 'c', 'a', 'd', 'e', 'b', 'a']
    dict_s = {}
    for i in s:
        if i not in dict_s.keys():
        	dict_s[i] = 1
        else:
        	dict_s[i] += 1

    이렇게 if문을 써서 key가 존재하지 않을 경우를 대비해야한다.

    하지만, defaultdict을 쓰면 코드가 조금 간결해진다.

    import collections
    
    s= ['a', 'b', 'c', 'a', 'd', 'e', 'b', 'a']
    dict_s = collections.defaultdict(int)
    for i in s:
    	dict_s[i] += 1

     

     

     

    2) Counter

    Counter객체는 아이템에 대한 개수를 계산해 딕셔너리로 리턴해주는 역할을 한다.

    예제 코드를 보며 어떻게 리턴값이 나오는지 확인해보자.

    리턴값은 보면 key는 매개값으로 받은 것의 아이템이 들어가 있고 key에 해당하는 value는 아이템의 개수가 들어간 것을 확인할 수 있다.

    이러한 Counter객체는 딕셔너리처럼 key로 접근이 가능하기에 어떠한 객체의 아이템 개수를 딕셔러리 형태로 얻고 싶을 때 Counter를 쓰면 편할 것이다.

     

     

     


    <참고자료>

    파이썬 알고리즘 인터뷰(박상길 지음)

    '프로그래밍 언어 > Python' 카테고리의 다른 글

    [python] LBYL와 EAFP  (0) 2021.08.01
    [python] deque 사용해보기  (0) 2021.07.30
    [python] heapq 모듈 사용해보기  (0) 2021.07.25

    댓글

Designed by Tistory.