给你一个其中包含不同的英文字母和标点符号的文本,你要找到其中出现最多的字母,返回的字母必须是小写形式,
当检查最想要的字母时,不区分大小写,所以在你的搜索中 "A" == "a"。 请确保你不计算标点符号,数字和空格,只计算字母。
如果你找到 两个或两个以上的具有相同的频率的字母, 返回那个先出现在字母表中的字母。 例如 -- “one”包含“o”,“n”,“e”每个字母一次,因此我们选择“e”。
输入: 用于分析的文本.
输出: 最常见的字母的小写形式。
def checkio(text: str) -> str:
str = text.lower()
dic = {}
for i in str:#遍历所有字母,放进字典,value+1
if i.islower():
if dic.get(i) == None:
dic[i] = 1
else:
dic[i] = dic.get(i) + 1
li = sorted(dic.items(), key=lambda x: x[1])#按key来排序
ff= []
for i in li:
if i[1] == li[-1][1]:#找到最大值对应的都放进ff
ff.append(i)
ff = dict(ff)
ff = sorted(ff.keys())#按key排序
#replace this for solution
return ff[0]#返回第一个Key
if __name__ == '__main__':
#These "asserts" using only for self-checking and not necessary for auto-testing
assert checkio("Hello World!") == "l", "Hello test"
assert checkio("How do you do?") == "o", "O is most wanted"
assert checkio("One") == "e", "All letter only once."
assert checkio("Oops!") == "o", "Don't forget about lower case."
assert checkio("AAaooo!!!!") == "a", "Only letters."
assert checkio("abe") == "a", "The First."
print("Start the long test")
assert checkio("a" * 9000 + "b" * 1000) == "a", "Long."
print("The local tests are done.")
他人写法1:
import string
def checkio(text):
"""
We iterate through latyn alphabet and count each letter in the text.
Then 'max' selects the most frequent letter.
For the case when we have several equal letter,
'max' selects the first from they.
"""
text = text.lower()
return max(string.ascii_lowercase, key=text.count)
他人写法2:
from string import ascii_lowercase as letters
checkio = lambda text: max(letters, key=text.lower().count)