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