python고수님들께 질문드립니다

조회수 1039회
**입력**
How are you How is it going

이렇게 입력시

**출력**
How :  2
are : 1
you : 1
is : 1
it : 1
going : 1

이런식으로 나오도록 하려고 프로그램을 짜려는데

dic = {}
a=input().split()
for i in range(len(a)):
    word=a[i]
    count=a.count(word)
    dic[word]=count
print(dic)

와 같이 써서 자꾸만 {key:~, key:~,...}처럼 나오게 되는데 위의 예시처럼 List와 Dictionary를 사용해 나오게 하려면 어떻게 프로그램을 짜야 하고 또한 a.count(word)를 쓰지 않고는 단어의 개수를 어떻게 셀 수 있는지 질문 드려봅니다.

2 답변

  • 많이 바꿨지만 생각해보니까 dic는 필요없었네요! 그 대신 리스트를 추가하고 요소를 넣으면서 중복방지를 했습니다.

    a=input().split()
    arr = []
    for i in range(len(a)):
        word=a[i]
        count=a.count(word)
        if word in arr:
            continue
        else:
            print(word, end=' : ')
            print(count)
            arr.append(word)
    

    ------------------------------------------------------------------------------------------------------------------------------------------+
    제가 궁금한게 생겼는데 조건문의 if word in arr은 "리스트안에 이미 요소가 있냐?"라는 조건입니다.
    리스트안에 이미 요소가있으면 중복방지를 위하여 continue했는데
    리스트안에 요소가 없으면 출력을 하고싶습니다.
    if word in arr의 조건을 반대로하려면 어떻게하나요?

    • if word not in arr 로 해보세요 HIAOAIH 2021.4.7 10:39
    • 답변 감사드립니다!! 알 수 없는 사용자 2021.4.7 14:18
    • not를 거기에넣으면되는거였네요! 감사합니다. noah0508 2021.4.8 07:32
  • from collections import Counter
    
    dic = Counter(input().split())
    for i in dic:
        print(i+" : "+str(dic.get(i)))
    

    이렇게 하면 원하시는 결과는 나옵니다. counter는 썼지만 count는 안썼네요 ㅎㅎ..

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

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

(ಠ_ಠ)
(ಠ‿ಠ)