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)
?我的意思是,每个残基都有百分比,最后,几个组合也有百分比。所有内容都在同一个文件中。很抱歉让您的评论混淆了,但我自己也明白了。再次感谢!