为了账号安全,请及时绑定邮箱和手机立即绑定

从我的输出中删除空格并以百分比打印结果

从我的输出中删除空格并以百分比打印结果

侃侃无极 2022-06-28 16:21:03
def check_letter_frequency():        fhand = open('phil.txt')        letter_frequency_dict = dict()        for wordz in fhand:            wordz = wordz.lower()            words = wordz.strip()            for letter in words:                if letter in letter_frequency_dict:                    letter_frequency_dict[letter] += 1                else:                    letter_frequency_dict[letter] = 1    sorted_letter_frequency = [(key, letter_frequency_dict[key]) for key in sorted(letter_frequency_dict, key=letter_frequency_dict.get, reverse=True)]        print("letter frequency of:")        letters = []        from string import ascii_lowercase        for key, value in sorted_letter_frequency[:8]:            # letters.append(ley)            print('{} : {}'.format(key, value))    check_letter_frequency()我的输出如下所示:letter frequency of: : 182 e : 108 t : 91 o : 77 h : 67 n : 66 i : 64 a : 64 
查看完整描述

2 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

尝试这个


# get the total number, excluding spaces

total = sum([val for key,val in sorted_letter_frequency[:8] if key != ' '])

for key, value in sorted_letter_frequency[:8]:

    # ignore space again

    if key == ' ': continue

    # print out frequency as percentage of the total

    print('{} : {}%'.format(key, float(value) / total * 100)


查看完整回答
反对 回复 2022-06-28
?
狐的传说

TA贡献1804条经验 获得超3个赞

如果您只想计算字母,则需要在构建字典时进行检查


import string

valid = string.ascii_letters + string.digits

for letter in words:

    if letter in valid:

        if letter in letter_frequency_dict:

            letter_frequency_dict[letter] += 1

        else:

            letter_frequency_dict[letter] = 1

至于百分比,您需要获取总字母数并使用它来计算百分比


total = sum(letter_frequency_dict.values())

for key, value in sorted_letter_frequency[:8]:

    print('{} : {}%'.format(key, (float(value) / float(total) * 100.0))


查看完整回答
反对 回复 2022-06-28
  • 2 回答
  • 0 关注
  • 74 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信