首页 > 解决方案 > 查找句子中字母的最高频率 - python

问题描述

我是python的初学者,我想制作一个程序来显示给定句子中字母的最高频率。但是,该程序只使用一个值,并且只显示频率最高的字母之一。

我已经尝试过创建一个列表,以便将最大值添加到其中,以便显示多个字母及其值。但是,问题是第一个值总是会出现,因为它大于 0。

sentencecount = input("Please enter a sentence:\n")
print(f"The length of your sentence is {len(sentencecount)}.")
lettercount = {}
for i in sentencecount:
    if i in lettercount:
        lettercount[i] += 1
    else:
        lettercount[i] = 1
print(lettercount)
maximum=0
x='a'
listofletters = []
for x, y in lettercount.items():
    if y >= maximum:
        maximum=y
        letter =x
        listofletters.append(letter)
        listofletters.append(maximum)
print(listofletters)

标签: python

解决方案


我建议你使用collections.Counter

from collections import Counter

sentence = "aaaabbbbcccc"

counter = Counter(sentence.lower().strip())
print(counter)  # Counter({'a': 4, 'b': 4, 'c': 4})
print(counter.most_common(1))  # [('a', 4)]

和方法确保您获得lower()strip()上述相同的结果'a Aaabb Bbc cc C'

如果您想选择所有出现频率最高的字母:

from collections import Counter

sentence = "aaaabbbbcccc"

counter = Counter(sentence.lower().strip())
most_common = counter.most_common()

max_occurrence = most_common[0][1]
res = [letter for letter, occurrence in most_common if occurrence == max_occurrence]
 # ['a', 'b', 'c']

推荐阅读