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)

基本的には「 freqinfo[i][1]が最大となるmax(freqinfo,key=operator.itemgetter(1))オブジェクトを探す」ということです。ペアなfreqinfoので。freqinfo[i](letter,frequency)

于 2012-01-19T04:00:57.260 に答える