파이썬에서 re.search, list, counter에 관한 질문입니다

조회수 1388회

제가 겪고 있는 문제를 예를 들자면 다음과 같습니다 a 리스트 중에서 pattern을 만족하는 단어를 추출해낸 후 그 단어들의 빈도수를 구해야하는 예제인데요,

a = ['이상해','이상한','요상한','이상하다','이상해진','이상해','이상해']

p = '이상' pattern = recompile(p)

for word in a : if pattern.search(word) : Counter(word)

라고 명령ㅇ르 입력하면 전체적인 단어 카운트가 되는 것이 아니라, 각 단어에 대해서 Counter('이 :1', '상:1', '해:1') ... ... .. 이런식으로 나오더라구요 제가 원하는 결과는

'이상해: 3', '이상하다 :1', '이상해진 :1' 이런 결과이거든요 어떻게 하면 위와 같은 결과가 나올수 있을까요?ㅜㅜ

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • if pattern.search(word) : Counter(word)

    여기가 잘못되어있습니다. 아래와 같이 사용하시면 될 듯 하네요!

    from collections import Counter
    import re
    
    a = ['이상해','이상한','요상한','이상하다','이상해진','이상해','이상해']
    
    p = '이상'
    pattern = re.compile(p)
    
    answer = []
    for word in a :
        if pattern.search(word) :
            answer.append(word)
    print(Counter(answer))
    

    최대한 원본 코드의 로직을 변경하지 않는 선에서 작성했습니다!

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)