Python. Проблема в списках и циклах
Нужно напечатать все разные слова и указать для каждого количество повторений в тексте. До этого нужно было разбить текст на список по коме и убрать точку, но с этим, вроде бы, проблем нету и успешно это сделал. Есть вот ошибка в 7 и 8 строке, вместо переменной z я могу сделать print и оно будет успешно выводить, но оно выводит не так как нужно. Хочу что бы вывод был так, что каждое слово только по одному разу и около него цифра, сколько раз повторяется. Мой код:
text = input("текст: ")
#Nastya, Cat, Eat, Nastya, Love.
text = text.replace(".", "")
words = list(text.split(", "))
b = words
z = 0
for i in b:
z = (i, words.count(i))
print(z)
print(list(set(words)))
Ответы (2 шт):
Автор решения: passant
→ Ссылка
Так, что-ли
text = input("текст: ")
#Nastya, Cat, Eat, Nastya, Love.
text = text.replace(".", "")
words = list(text.split(", "))
b = set(words)
z = 0
for i in b:
z = (i, words.count(i))
print(z)
Результат:
('Cat', 1)
('Nastya', 2)
('Love', 1)
('Eat', 1)
Автор решения: Klim
→ Ссылка
Реализация с помощью встроенной либы collections
from collections import Counter
text = input("текст: ")
c = Counter()
for word in text.replace(" ", "").replace(".", "").split(","):
c[word] += 1
Примеры принтов результатов
>>> print(c)
Counter({'Nastya': 2, 'Cat': 1, 'Eat': 1, 'Love': 1})
>>> c.keys()
dict_keys(['Nastya', 'Cat', 'Eat', 'Love'])
>>> c.values()
dict_values([2, 1, 1, 1])
>>> for i in c.items():
... print(i)
('Nastya', 2)
('Cat', 1)
('Eat', 1)
('Love', 1)
Подробнее про Counter