0

リストX = ['(a,20)','(b,30)','(c,15)','(d,45)'] 内リストXで、aが20回、bが30回、cが15回、dが45回発生しました。最も出現頻度の高い文字をdとして返すにはどうすればよいですか。教えていただけませんか。

4

4 に答える 4

3
In [295]: L
Out[295]: [('a', 20), ('b', 30), ('c', 15), ('d', 45)]

In [296]: max(L, key=operator.itemgetter(1))
Out[296]: ('d', 45)

データが実際にリスト内の文字列化されたタプルである場合:

In [300]: L = ['(a,20)','(b,30)','(c,15)','(d,45)']

In [301]: max(L, key=lambda s: int(s.rstrip(")").split(',')[1]))
Out[301]: '(d,45)'
于 2012-11-22T07:01:14.877 に答える
2

ラムダ関数を使用することもできます:

max(L, key=lambda x: x[1])
于 2012-11-22T07:04:25.950 に答える
0
      python 3.2
      from itertools import Counter

      lis=['(a,20)','(b,30)','(c,15)','(d,45)','(d,45)','(d,45)','(d,45)']
      mx=Counter(lis)
      mx.most_common()[0]
于 2012-11-22T10:36:09.063 に答える
0

以下の機能をご利用いただけます。

import sys
sys.stdin = open('in.txt', 'r')

def max_occurrence_element(p):
    cnt = {}
    for item in p:
        cnt.setdefault(item, 0)
        cnt[item] += 1
    return max(cnt.items(), key = lambda x: x[1])[0]

print max_occurrence_element(map(int, raw_input().split()))
于 2012-11-22T08:48:55.253 に答える