我编写了bellow函数来查找字符串中最常出现的char,它适用于:
它在以下字符串“Lorem ipsum dolor sit amet”中失败。最常见的字母都是3次出现,它会产生一个空白字符串而不是给我一个(它应该按字母顺序给出第一个)
def frequent_char(text):
charset = ''.join(sorted(text))
maxcount = 0
maxchar = None
for item in charset.lower():
charcount = text.count(item)
if charcount > maxcount :
maxcount = charcount
maxchar = item
return maxchar
我不知道我在代码中犯了什么错误。有人可以帮忙吗?
答案 0 :(得分:5)
空格在
Lorem ipsum dolor sit amet
中有四个出现。
所以,如果你的问题是
查找字符串中最常出现的字符
你的功能就像一个魅力。
修改强>
由于您在问题中同时使用“char”和“letter”,因此您所询问的内容并不完全清楚。由于'char'比Python中的'letter'更容易,我决定将你的问题解释为关于字符的问题。
答案 1 :(得分:2)
优雅的解决方案是使用collections.Counter
,请参阅:http://docs.python.org/2/library/collections.html#counter-objects
>>> counter = Counter('Lorem ipsum dolor sit amet')
最常出现的char是:
>>> counter.most_common(1)
[(' ', 4)]
如果你不关心空间:
>>> counter.most_common(2)[1]
('m', 3)
简单!
答案 2 :(得分:0)
从字符串中删除所有空格以使其正常工作。
def frequent_char(text):
charset = ''.join(sorted(text))
textTmp = text.replace(" ", "") # add this to remove spaces
maxcount = 0
maxchar = None
for item in charset.lower():
charcount = textTmp.count(item)
if charcount > maxcount:
maxcount = charcount
maxchar = item
return maxchar