본문 바로가기
Language/Python

[Python] Dict로 문자열 count하기 | setDefault(i,0), get(i,0)

by 카프리썬 2021. 7. 12.
728x90

앞에서 counter(), defaultdict()랑 비슷하게 문자열의 count를 셀 수 있는 또 다른 방법이다. 

사실 이게 더 일반적이고(내기준) 자주 쓰였던 방식인데, 조금더 간단하게 쓸 수 있는 함수를 찾아서 정리해본다. 

일반적인 Dict처리

예를 들어 주어진 단어에 들어있는 각 알파벳 글자의 수를 세어서 사전에 저장해주는 함수를 구현하자면,

주로 이렇게 dict안에 있는지 확인하고, 있으면 기존의 count값에 더해주고 없으면 새로1을 추가했다.

def countLetters(word):
    check={}
    for letter in word:
        if letter in check:
            check[letter]=check[letter]+1
        else:
            check[letter]=1
    print(check)
  
 word='wowoo'
countLetters(word)  #{'w': 2, 'o': 3 }

 

일반적인 Dict처리(get)

또는 이렇게까지 간단하게 처리할 수도 있다. 

딕셔너리 변수 이름(check)에 get 이라는 매소드를 할당한다.

그리고는 첫 번째 인자로는 찾고자 하는 '키'를 넣는다. 지금은 해당하는 찾고자 하는 문자가 key가 된다. 

def countLetters2(word):
    check={}
    for letter in word:
        check[letter]=check.get(letter,0)+1
    print(check) 
   
   
word='wowoo'
countLetters2(word)  #{'w': 2, 'o': 3 }

 

setDefault()

물론 직관적이지만, 조금더 코드를 간결하게 할 수 있는 방법이 있다.

def checkMagazine(word):
    check={}
    for letter in word:
        check.setdefault(letter,0)
        check[letter]=check[letter]+1
    print(check) #{'w': 2, 'o': 3 }

setdefault 함수를 통해 dict에 있는지 확인하는 if 조건절이 생략된다.

첫번째 인자로 키(key)값, 두번째 인자로 기본값(default value)를 넘긴다.

간단하지만, for 루프 내에서 setdefault 함수가 무조건적으로 항상 호출된다.

 

더 나은방식으로 counter나 default를 사용할 수 있다.

2021.07.12 - [Python] 문자열 애너그램(Anagrams) | Counter(), DefaultDict()

 

[Python] 문자열 애너그램(Anagrams) | Counter(), DefaultDict()

이 문제를 풀다가 애너그램을 찾는 방법에 대해서 정리해본다. 풀이를 하며 Counter를 이용한 방법과 DefaultDict를 이용한 방법 2가지를 배웠다. 요구사항 우선 문제의 요구사항을 정리해보면 이렇

pearlluck.tistory.com

 

반응형