需要找到最常出现的大写字母

时间:2014-12-03 18:36:42

标签: python

我想知道在Python中编写函数的最佳方法是找到哪个大写字母最常出现在字符串中,然后告诉我该字母出现的次数。

我正在使用for循环,第一个遍历字符串,然后嵌套一个遍历所有大写字符。试着找出分别计算每个字母的最佳方法。

2 个答案:

答案 0 :(得分:3)

这是collections.Counter

的非常简单的应用程序
>>> from collections import Counter
>>> s = 'This is A TesT String With CAPITALS'
>>> c = Counter(i for i in s if i.isupper())
>>> c
Counter({'T': 4, 'A': 3, 'S': 2, 'I': 1, 'W': 1, 'P': 1, 'L': 1, 'C': 1})

要以更加循序渐进的方式执行此操作

>>> uniqueCaps = set(filter(str.isupper, s))
>>> uniqueCaps
{'S', 'C', 'P', 'I', 'L', 'A', 'T', 'W'}

counts = dict()
for letter in uniqueCaps:
    counts[letter] = s.count(letter)

>>> counts
{'I': 1, 'S': 2, 'A': 3, 'L': 1, 'T': 4, 'C': 1, 'P': 1, 'W': 1}

在中间的某个地方见面

>>> counts = {letter: s.count(letter) for letter in uniqueCaps}
>>> counts
{'I': 1, 'S': 2, 'A': 3, 'L': 1, 'T': 4, 'C': 1, 'P': 1, 'W': 1}

答案 1 :(得分:0)

>>> string = "THIS can be DONE USING DICTIONARIES"
>>> dic={}
>>> for i in string:
...    if i.isupper():
...       dic.setdefault(i,0)
...       dic[i]+=1
... 
>>> most_common = sorted(dic.items(),key=lambda x:x[1], reverse=True)
>>> most_common 
[('I', 5), ('N', 3), ('S', 3), ('E', 2), ('D', 2), ('O', 2), ('T', 2), ('A', 1), ('C', 1), ('G', 1), ('H', 1), ('R', 1), ('U', 1)]