计算字符串的百分比而不是统计

时间:2013-03-11 14:49:36

标签: 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]))

提前致谢!

2 个答案:

答案 0 :(得分:1)

您需要找到所有字母的总和:

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 :(得分:1)

首先,字母总数可以有两个含义:

<强> 1。只有one_letter中的字词(问题中只有'A-Z')

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。文件中的所有字词(包括“a-z”,“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替换。