Python 计算字符串的百分比而不是统计信息
我想计算文件中每个字母的百分比,而不是数字。如何修改以下代码Python 计算字符串的百分比而不是统计信息,python,statistics,percentage,letter,Python,Statistics,Percentage,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 lette
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)
然后,要获得百分比,您需要如下更改代码:
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。只有
一个字母中的单词
(问题中只有“A-Z”)
2。文件中的所有单词(包括“a-z”、“0-9”和…)
在那之后,你可以通过
for letter in one_letter:
stat_file.writelines("%s: %f%%\n" %(letter, \
stat.get(letter, 0)/float(total_count)*100))
请注意,stat.get(字母,0)
仅适用于stat
中的所有字母
如果您确定
A-Z
处于stat
中,则可以用stat[letter]
替换结果文件:100%,其余为0%。此外,我还想得到A+B或C+Z的百分比,例如。顺便说一句,我如何获得包含多个字母的附加统计数据。例如,A+B的百分比?你的意思是(stat['A']+stat['B'])/float(total_count)*100)
?我的意思是,每个残基都有百分比,最后,几个组合也有百分比。所有内容都在同一个文件中。很抱歉让您的评论混淆了,但我自己也明白了。再次感谢!