1

我对 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(number) 中更改括号中的数字,但我不想更多地显示其他字母每次显示多少次。

感谢所有的帮助!

4

1 回答 1

0

正如我在评论中解释的那样:

您可以省略参数以most_common获取所有字符的列表,从最常见到最不常见排序。然后只需遍历该结果并收集字符,只要计数器值仍然相同。这样你就可以得到所有最常见的字符。

Counter.most_common(n)从计数器返回n最常见的元素。或者如果n未指定 where ,它将返回计数器中的所有元素,按计数排序。

>>> 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']
于 2013-11-08T13:57:04.650 回答