0

我已经编写了下面的代码,我需要从它提供的列表中获取最大字符数。

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)]

如何找到给定字符串中的最大字符数?

4

3 回答 3

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)]
于 2012-01-19T03:56:31.407 回答
0

您的功能令人眼花缭乱,但如果您可以使用它来找到最常见的值:

sorted(ssin('THE AGES OF THE KINGS'), key = itemgetter(1), reverse = True)[0]

这并不能检查是否存在最频繁的联系。

于 2012-01-19T04:00:09.797 回答
0
>>> import operator
>>> freqinfo = ssin('THE AGES OF THE KINGS')
>>> max(freqinfo,key=operator.itemgetter(1))
('E',3)

基本上max(freqinfo,key=operator.itemgetter(1))说“寻找freqinfofreqinfo[i][1] 最大的对象”。因为freqinfo[i]是一(letter,frequency)对。

于 2012-01-19T04:00:57.260 回答