#python #python-3.x #list
#python #python-3.x #Список
Вопрос:
book_title = ['great', 'expectations','the', 'adventures', 'of', 'sherlock','holmes','the','great','gasby','hamlet','adventures','of','huckleberry','fin']
word_counter = []
for words in book_title:
if words not in word_counter:
word_counter[words]=1
else:
word_counter[words] =1
я получаю тип ошибки, которую я должен исправить, чтобы улучшить это
Ошибка типа: индексы списка должны быть целыми числами, а не str
Комментарии:
1. Вам нужно создать словарь вместо списка, чтобы сохранить количество слов
2. Вам может понадобиться dict .
word_counter = {}
.3. Или просто:
word_counter = Counter(book_title)
4. Пожалуйста, предоставьте полную обратную трассировку
Ответ №1:
Как отмечали другие, вы концептуально пытаетесь использовать словарь, а не список. Однако для подсчета существует специализированный словарь, collections.Counter
который вы можете использовать следующим образом:
from collections import Counter
word_counter = Counter(book_title)
что делает то же самое гораздо проще.
Ответ №2:
Вы должны использовать словарь для подсчета слов. Для этого лучше использовать defaultdict .
from collections import defaultdict
book_title = ['great', 'expectations','the', 'adventures', 'of', 'sherlock','holmes','the','great','gasby','hamlet','adventures','of','huckleberry','fin']
word_counter = defaultdict(int)
for word in book_title:
word_counter[word] = 1
Комментарии:
1. Я думаю, что если вы используете модуль collections, на самом деле лучше использовать Counter .
2. Да, я полагаю, это также может быть полезно в некоторых случаях.
Ответ №3:
book_title = ['great', 'expectations','the', 'adventures', 'of', 'sherlock','holmes','the','great','gasby','hamlet','adventures','of','huckleberry','fin']
word_counter = {} #use dict not list
for words in book_title:
if words not in word_counter:
word_counter[words]=1
else:
word_counter[words] =1
Используйте словарь для пар ключ-значение. Список хранит только значения. Вы пытаетесь получить доступ к значению по его ключу, что невозможно в списке.
Pythonic способ
from collections import Counter
book_title = ['great', 'expectations','the', 'adventures', 'of', 'sherlock','holmes','the','great','gasby','hamlet','adventures','of','huckleberry','fin']
word_counter = Counter(book_title)