我想计算文件中每个字母的百分比而不是数字。如何修改以下代码?
stat_file = open(filename, 'w')
one_letter = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
for letter in one_letter:
stat_file.writelines('%s : %d \n' % (letter, statistics[letter]))
提前致谢!
答案 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
替换。