给你一段文本,其中包含不同的英文字母和标点符号。
你要找到其中那个出现最多的 字母,返回的字母必须是 小写形式。
找这个“头号通缉字母”时,大小写不重要,所以对于你的搜索而言 "A" == "a"。 注意不要管标点符号、数字和空格,我们只要 字母!
如果你找到 两个或两个以上出现频率相同的字母, 那么返回字母表中靠前的那个。
例如“one”包含“o”、“n”、“e”每个字母一次,因此我们选择“e”。
输入: 包含待分析文本的字符串
输出: 那个出现最多的字母的字符串(小写哦)
范例:
checkio("Hello World!") == "l"
checkio("How do you do?") == "o"
checkio("One") == "e"
checkio("Oops!") == "o"
checkio("AAaooo!!!!") == "a"
checkio("abe") == "a"
有何功用: 大多数的解密任务都需要搞清一段文本中各种字符的出现频率。
例如,有了字母的出现频率,我们就可以轻易地破解一个简单的移位密码或替换式密码了。语言专家们对此总是乐此不疲!
前提::
输入的文本 text 只包含 ASCII 码字符
0 < len(text) ≤ 10 5
from collections import *
import re
def checkio(text) -> str:
# 过滤标点符、数字、空格
text = re.sub("[0-9\s+`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?%+_-]", "", text)
# 转成全小写格式并增加空格分隔
text = ' '.join(text.lower())
# 通过空格分割为列表
li = text.split(' ')
# 使用Counter计数
res = dict(Counter(li))
print(res)
# 根据key值排序
res = dict(sorted(res.items(), key=lambda res: res[0], reverse=False))
print(res)
# 然后取value最大值
return max(res, key=res.get)
if __name__ == '__main__':
print("Example:")
print(checkio("Hello World!"))
#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."
assert checkio("Lorem ipsum dolor sit amet") == 'm', "The First."
assert checkio("a-z") == 'a', "symbol not."
print("Start the long test")
assert checkio("a" * 9000 + "b" * 1000) == "a", "Long."
print("The local tests are done.")
"""
# 用sorted函数的key= 参数排序:
# 按照key进行排序
print sorted(dict1.items(), key=lambda dict1: dict1[0])
# 按照value进行排序
print sorted(dict1.items(), key=lambda dict1: dict1[1])sum(c.values()) # 所有计数的总数
c.clear() # 重置Counter对象,注意不是删除
list(c) # 将c中的键转为列表
set(c) # 将c中的键转为set
dict(c) # 将c中的键值对转为字典
c.items() # 转为(elem, cnt)格式的列表
Counter(dict(list_of_pairs)) # 从(elem, cnt)格式的列表转换为Counter类对象
c.most_common()[:-n:-1] # 取出计数最少的n-1个元素
c += Counter() # 移除0和负值
"""