题目描述
输入一个只包含小写英文字母和数字的字符串,按照不同字符统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASCII码由小到大排序输出。
数据范围:字符串长度满足
1
≤
l
e
n
(
s
t
r
)
≤
1000
1 \le len(str) \le 1000
1≤len(str)≤1000
输入描述
一个只包含小写英文字母和数字的字符串。
输出描述
一个字符串,为不同字母出现次数的降序表示。若出现次数相同,则按ASCII码的升序输出。
代码
while True:
try:
S=input()
L={x:0 for x in S} #字典key不可重复
for x in S:
if x in L:
L[x]+=1
L=sorted(L.items(),key=lambda x:(-x[1],x[0])) #次数降序表示,相等则按ASCII码升序表示
for x in dict(L).keys():
print(x,end='')
except:
break
补充-sorted函数
sorted函数可以对python的所有可迭代对象进行排序操作,不改变原对象,只返回新的对象
sorted(iterable, key, reverse)
key 默认为None
reverse 默认为False 即升序
key通常用到lambda表示,如本题
sorted(L.items(),key=lambda x:(-x[1],x[0]))
x[0] 字典key
x[-1] 字典value
表示先按照字典value降序排列,再按照字典key升序排列。由于字典的key记录的是字符,字典的value记录的是出现次数。故符合题目按照次数降序排列,若次数相同,再按照ASCII码升序排列