本文实例讲述了Python3实现统计单词表中每个字母出现频率的方法。分享给大家供大家参考,具体如下:
作为python字典与数组概念的运用,统计字母表中每个字母出现的频率,作为练习再合适不过。
解决问题过程中需要用到的知识点包括:字典的创建、增添元素,数组的创建、增添元素,数组的遍历等
这个问题解决的思路为:首先从文件中按行依次读入单词,去除换行符后添加到数组 new_list 中。依次遍历数组 new_list 的每一个字符串,将每个字符串连同上一次循环中的频率统计结果 old_d (old_d在遍历new_list之前进行初始化)一起作为实参传递给频率统计函数 histogram()。histogram()函数在上一轮频率统计基础上得出本轮频率统计结果,结果通过字典 d 传回,将值赋给 old_d 。直到遍历完new_list,再将 old_d 统计结果打印。
'''transform string into dictionary s is input string d is dictionary to restore every bit in string ''' def histogram(s, old_d): d = old_d for c in s: d[c] = d.get(c, 0) + 1 return d '''This function can calculate the frequency of every letter in alphabet ''' fin = open("words.txt") new_list = [] for line in fin: rs = line.rstrip('\n') #delete the '\n' after every letter new_list.append(rs) # new_list is used to restore letters old_d = dict() # initialize the dictionary for i in range(len(new_list)): #calculate the letter #frequency of every word old_d = histogram(new_list[i], old_d) #old_d is used to #restore letter frequency before new_list[i] print(old_d)
这里words.txt文档内容如下:
But soft what light through yonder window breaks
It is the east and Juliet is the sun
Arise fair sun and kill the envious moon
Who is already sick and pale with grief
代码运行结果:
{'B': 1, 'u': 6, 't': 12, ' ': 29, 's': 11, 'o': 8, 'f': 3, 'w': 4, 'h': 9, 'a': 10, 'l': 6, 'i': 13, 'g': 3, 'r': 7, 'y': 2, 'n': 9, 'd': 6, 'e': 12, 'b': 1, 'k': 3, 'I': 1, 'J': 1, 'A': 1, 'v': 1, 'm': 1, 'W': 1, 'c': 1, 'p': 1}
Python3实现统计单词表中每个字母出现频率的方法示例
- Author -
苏奇声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@