我是Python的新手,我有这个程序,我正在修修补补。它应该从输入中获取一个字符串并显示哪个字符最常见。
stringToData = raw_input("Please enter your string: ")
# imports collections class
import collections
# gets the data needed from the collection
letter, count = collections.Counter(stringToData).most_common(1)[0]
# prints the results
print "The most frequent character is %s, which occurred %d times." % (
letter, count)
但是,如果字符串中每个字符有1个字符,则它只显示一个字母,并表示它是最常用的字符。我想在most_common(数字)中更改括号中的数字,但我不希望每次显示其他字母的次数。
谢谢大家的帮助!
答案 0 :(得分:0)
正如我在评论中解释的那样:
您可以将参数留给
most_common
以获取所有字符的列表,从最常见到最不常见的排序。然后只要循环遍历该结果并收集字符,只要计数器值仍然相同即可。这样你就可以获得最常见的所有角色。
Counter.most_common(n)
返回来自计数器的n
最常见元素。或者,如果未指定n
,它将返回计数器中的所有元素,按计数排序。
>>> collections.Counter('abcdab').most_common()
[('a', 2), ('b', 2), ('c', 1), ('d', 1)]
您可以使用此行为简单地遍历按计数排序的所有元素。只要计数与输出中的第一个元素相同,就会知道元素在字符串中的数量仍然相同。
>>> c = collections.Counter('abcdefgabc')
>>> maxCount = c.most_common(1)[0][1]
>>> elements = []
>>> for element, count in c.most_common():
if count != maxCount:
break
elements.append(element)
>>> elements
['a', 'c', 'b']
>>> [e for e, c in c.most_common() if c == maxCount]
['a', 'c', 'b']