在列表中找到最大字符数:Python代码
我写了下面的代码,我需要从它给出的列表中找出字符数量最多的那个。
def ssin(a):
ASAS = map(lambda y: (chr(ord('A')+y),len(filter(lambda x: ord(x) - ord('A') == y, a))),range(0,26))
return ASAS
ssin('THE AGES OF THE KINGS')
答案:
[('A', 1), ('B', 0), ('C', 0), ('D', 0), ('E', 3), ('F', 1), ('G', 2),
('H', 2), ('I', 1), ('J', 0), ('K', 1), ('L', 0), ('M', 0), ('N', 1),
('O', 1), ('P', 0), ('Q', 0), ('R', 0), ('S', 2), ('T', 2), ('U', 0),
('V', 0), ('W', 0), ('X', 0), ('Y', 0), ('Z', 0)]
怎么在一个给定的字符串中找到字符数量最多的呢?
3 个回答
0
>>> import operator
>>> freqinfo = ssin('THE AGES OF THE KINGS')
>>> max(freqinfo,key=operator.itemgetter(1))
('E',3)
简单来说,max(freqinfo,key=operator.itemgetter(1))
的意思是“在 freqinfo
这个列表中找出那个频率值最大的对象”。因为 freqinfo[i]
是一个包含字母和频率的配对,比如说(字母,频率)。
0
你的函数看起来很让人头疼,不过如果你能用这个方法找到出现次数最多的值,那就不错:
sorted(ssin('THE AGES OF THE KINGS'), key = itemgetter(1), reverse = True)[0]
不过这个方法并没有检查是否有多个值出现的次数是一样多的。
2
Counter
是你的好帮手:
>>> from collections import Counter
>>> Counter(char.upper() for char in 'THE AGES OF THE KINGS' if char.isalpha()).most_common(1)
[('E', 3)]