题目描述
小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组 成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。
现在,请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这 个字母出现的次数。
输入描述
输入一行包含一个单词,单词只由小写英文字母组成。
对于所有的评测用例,输入的单词长度不超过 1000。
输出描述
输出两行,第一行包含一个英文字母,表示单词中出现得最多的字母是哪 个。如果有多个字母出现的次数相等,输出字典序最小的那个。
第二行包含一个整数,表示出现得最多的那个字母在单词中出现的次数。
输入输出样例
示例 1
输入
lanqiao
输出
a
2
str=input()
num={}
get_value=[]
for i in str:
num[i]=0
for i in str:
num[i]=num[i]+1
MAX=max(num.values())
for i in num.keys():
if num[i]==MAX:
get_value.append(i)
get_value.sort()
print(get_value[0])
print(MAX)
题目中出现了“字典序最小”,就是要对字典的键进行排序,找最小的那个,因此我就把键放进另外一个列表中,对列表进行排序
注意:不可以用sort()直接对字典的键排序,
但是可以用内置函数sorted(),但是似乎没有效果
优化:
str=list(input())
MAX=sorted(sorted(str),key=lambda x:str.count(x),reverse=True)[0]
#先对列表进行升序排序,确保在字符出现的次数相同的情况下输出的是字典序小的字符
#然后对排序后的列表再按照每个字符出现的次数进行降序排序,排序后的列表的第一个字符就是出现次数最多的情况下字典序最小的
print(MAX,str.count(MAX),sep='\n')
key=lambda x:str.count(x) 以str.count(x)位标准对MAX进行排序
key=lambda x: x[1] 为对前面的对象中的第二维数据(即value)的值进行排序。
key=lambda 变量:变量[维数] 。维数可以按照自己的需要进行设置。