728x90
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()
728x90
반응형
'🍃 Language > Python' 카테고리의 다른 글
python에 rusty를 섞는다?! 파이썬 segmentation fault 원인? (0) | 2021.12.03 |
---|---|
[python] Class와 __init__함수 (0) | 2021.09.06 |
[python] Django에서 절대경로 __file__ 로 지정하기 (os.path) (2) | 2021.09.06 |
[Python] 문자열 애너그램(Anagrams) | Counter(), DefaultDict() (0) | 2021.07.12 |
[Python] 커스텀한 기준으로 sort()하기 cmp_to_key() (0) | 2021.07.12 |
[python] 대문자로 변환하기 upper() / capitalize() / title() (0) | 2021.07.11 |