2015-05-21 3 views
1

Я пытаюсь подсчитать количество вхождений каждого слова в строку. Затем я хочу вернуть результаты в виде словаря, имея слова как «Ключи» и их количество входов «Значения». Однако, когда я запускаю свой код, он возвращает утверждение: line 8, in word_counter builtins.TypeError: string indices must be integers Я не совсем понимаю, что это значит.Подсчет слов в строке с использованием словарей

def word_counter(input_str): 
    lower_sentence = input_str.lower() 
    dictionary = {} 
    words = set(lower_sentence.split()) 
    for word in words: 
     if word in input_str: 
      input_str[word] += 1 
     else: 
      input_str[word] = 1 
    return dictionary 

ответ

3

Сначала я думаю, что вы имели в виду:

dictionary[word]+=1 

вместо input_str[word] += 1, но его не так, как для этого task.It также поднимет KeyError исключение.

Вы можете просто использовать collections.Counter как еще один способ pythoinc для таких задач.

from collections import Counter 
print Counter('this is a sent this is not a word'.split()) 
Counter({'a': 2, 'this': 2, 'is': 2, 'word': 1, 'not': 1, 'sent': 1}) 
+1

Спасибо !. но вместо этого я использовал функцию '.count()' как 'lower_sentence.count (word)'. и он работал отлично. –

+0

@ Moh'dH Привет, да, вы можете использовать метод 'count', но' Counter' более эффективен для длинных строк! – Kasramvd

Смежные вопросы