Создать словарь из вводимых слов с их количеством

С клавиатуры вводятся слова через запятую с пробелом. Нужно составить словарь, в котором ключами будут встреченные слова, а значениями - их количество в строке (слова могут повторяться). Если вводится пробел, то выводится пустой словарь, если слово с пробелом, то слово в словаре без пробела.

s = input()
s = s.split(', ')
d = {}
for word in s:
    d[word] = d.get(word, 0) + 1
print (d)

Этот код выводит словарь со словами и их количеством в тексте. Но если задать пробел или слово без запятой и с пробелом, он не выводит пустой словарь или слово без пробела.Т.е. Если мы задаём Dfg, dfg, dfg, sdf, sdf, dfh он выведет {"Dfg":1, "dfg":2, "sdf":2, "dfh":1}, что и требуется. Но если задать пробел [ ] он выводит {" ": 1}, а необходимо пустой словарь {}. Если задать слово без запятой, но с пробелом [dfg_] то выводит {"dfg_" : 1}, а нужно {"dfg" : 1}. Как задать условие на разделение слов? Или как задать условие на эти частные случаи?


Ответы (3 шт):

Автор решения: Ahmed Ayman 123

Это происходит так как вы указали программе разделять слова по ", " запятой + пробел, а если нету запятой то код думает что это не разделитель, а отдельное слово

s = input()
s = s.split(', ') #Вот
d = {}
for word in s:
    d[word] = d.get(word, 0) + 1
print (d)
→ Ссылка
Автор решения: CrazyElf
d = {}
for word in input().split(','):
    word = word.strip() # убрать лишние пробелы по бокам слов
    if word: # проверка, что слово получилось не пустое
        d[word] = d.get(word, 0) + 1
print(d)

А можно использовать готовый счётчик Counter.

→ Ссылка
Автор решения: vadim vaduxa
words = list(map(str.strip, input().split(',')))
dt = {w: words.count(w) for w in set(words)}

или

import collections
dt = dict(collections.Counter(map(str.strip, input().split(','))))
→ Ссылка