我想计算文件中每个字母的百分比而不是数字。如何修改以下代码?
stat_file = open(filename, 'w')
one_letter = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
for letter in one_letter:
stat_file.writelines('%s : %d \n' % (letter, statistics[letter]))
提前致谢!
我想计算文件中每个字母的百分比而不是数字。如何修改以下代码?
stat_file = open(filename, 'w')
one_letter = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
for letter in one_letter:
stat_file.writelines('%s : %d \n' % (letter, statistics[letter]))
提前致谢!
您需要找到所有字母的总和,如下所示:
letter_count=0
for letter in one_letter:
letter_count= letter_count + statistics[letter]
然后要获得您需要更改代码的百分比,如下所示:
stat_file.writelines('%s : %d %% \n' % (letter, (statistics[letter]/letter_count)*100) if statistics[letter]>0 else 0)
注意:我没有测试过代码(这台电脑上没有安装 python),但它应该可以工作。编辑:检查这封信是否发生了 0 次。
首先,字母总数可以有两种含义:
1.只有在one_letter
(你的问题中只有“AZ”)
one_letter = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
stat = {'A': 5,
'B':3,
'C':9,
'U': 5,
'D': 9,
'a': 99}
total_count = sum(stat.get(letter, 0) for letter in one_letter) # should be 31
2.你文件中的所有单词(包括'az','0-9',...)
total_count = sum(stat.values()) # should be 130
之后,您可以通过以下方式计算您的百分比
for letter in one_letter:
stat_file.writelines("%s: %f%%\n" %(letter, \
stat.get(letter, 0)/float(total_count)*100))
请注意,stat.get(letter, 0)
如果不是所有字母都在stat
.
如果您stat[letter]
确定A-Z
在stat
.