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

您还可以使用 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 回答