Проблема с тем, что вы делаете, вы храните индекс массива, где слово вместо подсчета этих слов.
Для достижения этой цели вы можете просто использовать collections.Counter
from collections import Counter
dtt = ['you want home at our peace', 'we went our home', 'our home is nice', 'we want peace at home']
counted_words = Counter(' '.join(dtt).split())
# if you want to see what the counted words are you can print it
print counted_words
>>> Counter({'home': 4, 'our': 3, 'we': 2, 'peace': 2, 'at': 2, 'want': 2, 'is': 1, 'you': 1, 'went': 1, 'nice': 1})
НЕКОТОРЫХ Cleanup: как упомянуто в комментариях
str()
не является необходимым для вашего ' '.join(dtt).split()
Вы также можете удалить назначение списка и выполните счетчик на той же линии
Counter(' '.join(dtt).split())
Немного больше о ваших индексах списка; сначала вам нужно понять, что делает ваш код.
dtt = [
'you want home at our peace',
'we went our home',
'our home is nice',
'we want peace at home'
]
У вас есть 19 слов здесь; print len(word_listT)
возвращается 19. Теперь на следующей строке word_listT = str(' '.join(dtt)).split()
вы делаете список всех слов, который выглядит, как это
word_listT = [
'you',
'want',
'home',
'at',
'our',
'peace',
'we',
'went',
'our',
'home',
'our',
'home',
'is',
'nice',
'we',
'want',
'peace',
'at',
'home'
]
Количество их снова: 19 слов. Самое последнее слово - «дом». И индексы индексов начинаются с 0, поэтому от 0 до 18 = 19 элементов. yourlist[18]
является «домом». Это не имеет никакого отношения к местоположению строки или чему-либо еще, просто к индексу вашего нового массива. :)
отлично работает! Спасибо! – Toly
@ Толи конечно! Рад, что смог помочь! Вы должны осмотреться внутри коллекций, там есть много полезных инструментов. 'Counter' - это один, я также использую' defaultdict' все время. Если у вас есть еще вопросы, не стесняйтесь спрашивать, и я попробую и помогу, если смогу :) –
@JohnRuddell join() возвращает строку, почему вы хотите снова передать ее в строку? Счетчик ('.join (dtt) .split()) сделает – helloV