我想知道在Python中编写函数的最佳方法是找到哪个大写字母最常出现在字符串中,然后告诉我该字母出现的次数。
我正在使用for循环,第一个遍历字符串,然后嵌套一个遍历所有大写字符。试着找出分别计算每个字母的最佳方法。
答案 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)]