有一个python字符串,例如"编程";我必须找到出现次数最多的最小字母。
这是针对给定的输入字符串="0";编程";输出应该是g 2
我试过这个,但没能实现的解决方案
str1 = 'programming'
max_freq = {}
for i in str1:
if i in max_freq:
max_freq[i] += 1
else:
max_freq[i] = 1
res = max(max_freq, key = max_freq.get)
如有任何帮助,将不胜感激
您可以使用Counter
来实现这一点。
- 使用
Counter
计算每个字母的频率。这将给你一个dict
- 先按值降序排列
dict
,然后按键值升序排列 - 第一项是你的答案
from collections import Counter
str1 = 'programming'
d = Counter(str1)
d = sorted(d.items(), key= lambda x: (-x[1], x[0]))
print(d[0])
('g', 2)
为了让你的代码工作,用这个替换最后一行
res = sorted(max_freq.items(), key=lambda x: (-x[1], x[0]))[0]
res
将具有出现次数最多的最小字母。即('g', 2)
你很接近,只是没有正确地获得最大值。如果你只关心数字,那么你可以稍微修改一下你的例子:
str1 = 'programming'
max_freq = {}
for i in str1:
if i in max_freq:
max_freq[i] += 1
else:
max_freq[i] = 1
res = max(max_freq.values())