Получить количество слов и среднюю длину из частотного словаря

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

wordcount=len(list(freq.keys()))
report["count:"]=wordcount
#for average length:
avg=list(freq.keys())
average=sum(map(len,avg))/len(avg)
report["avglen"]=average

person user2976821    schedule 22.11.2013    source источник
comment
len(freq) достаточно, чтобы подсчитать количество слов.   -  person Martijn Pieters    schedule 22.11.2013


Ответы (2)


number_of_words  = int(raw_input("Enter the number of words. "))

word_dict = {}

for i in range(number_of_words):
    word = raw_input("Enter word. ")
    if word in word_dict:
        word_dict[word] += 1
    else:
        word_dict[word] = 1

print word_dict

print sum([len(word)*word_dict[word] for word in word_dict])/number_of_words

Очень похожий вопрос: https://stackoverflow.com/questions/20143947/word-frequency-counter-python/20145320#20145320

person tmj    schedule 22.11.2013

Используйте функцию sum и dict.values():

freq = { 'test' : 10, 'rep' : 100 }
wordcount = sum(freq.values())
average   = sum(len(w) * c for w, c in freq.items()) / wordcount
print(wordcount, average)
person perreal    schedule 22.11.2013