Поиск частоты каждого слова в списке и отображение результата в словаре

#python-3.x #list #dictionary

#python-3.x #Список #словарь

Вопрос:

«‘ def freq(str):

 # break the string into list of words  
str = str.lower().split()          
str2 = [] 

# loop till string values present in list str 
for i in str:              

    # checking for the duplicacy 
    if i not in str2: 

        # insert value in str2 
        str2.append(i)  
          
for i in range(0, len(str2)): 

    # count the frequency of each word(present  
    # in str2) in str and print 
    print('Frequency of', str2[i], 'is :', str.count(str2[i])) 
    print(str(list))
 

»’

прямо сейчас результатом для freq (‘Ад — это ад’) является частота ада: 2 Частота is : 1

как отобразить результат в формате словаря, например: (‘hell: 2′,’is: 1’)

Комментарии:

1. Коллекции. Счетчик

Ответ №1:

Опубликованный вами код кажется мне ошибочным. Зачем вам проверять наличие дубликатов, если вам нужно подсчитать все слова и в чем польза str2 . Опять же, вы проверяете количество, в str2 котором нет повторяющихся слов, оно будет считать как 1 для каждого слова.

Вы можете попробовать следующий код для получения желаемого результата:

 def freq(str1):
    str1 = str1.lower().split()
    result = dict()
    
    for word in str1:
        result[word] = str1.count(word)
        
    return result
 

PS: Не рекомендуется использовать ключевые слова в качестве переменных в вашем коде, str это встроенный класс.

Комментарии:

1. Спасибо вам, сэр, за очень простое и четкое решение. Обязательно буду работать над улучшением моих методов кодирования