найти максимальное количество символов в списке: код Python - PullRequest
0 голосов
/ 19 января 2012

Я написал приведенный ниже код, и мне нужно получить МАКС. Количество символов из списка, который он дает.

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 ]

2 голосов
/ 19 января 2012

Counter ваш друг:

>>> from collections import Counter
>>> Counter(char.upper() for char in 'THE AGES OF THE KINGS' if char.isalpha()).most_common(1)
[('E', 3)]
0 голосов
/ 19 января 2012
>>> 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] [1] является максимальным". Потому что freqinfo[i] - это пара (letter,frequency).

0 голосов
/ 19 января 2012

Ваша функция болезненна для глаз, но если вы можете использовать это, чтобы найти наиболее частое значение:

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

Это ничего не делает, чтобы проверить, есть ли связи для большинствачасто.

...