在列表中X = ['(a,20)','(b,30)','(c,15)','(d,45)']
在列表 X 中,a 出现了 20 次,b 出现了 30 次,c 出现了 15 次,d 出现了 45 次如何将出现次数最多的字符返回为 d ?你能告诉我吗?
问问题
447 次
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
您还可以使用 lambda 函数:
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 回答