假设我有list
L= [3 2 1 3 5 4 5 3 5 3]
输出应该是3
,因为5
在列表中是最大值,因为它的号码是。出现次数为3
我能够尝试到现在为止
from collections import defaultdict
d = defaultdict(int)
for i in height:
d[i] += 1
result = max(d.iteritems(), key=lambda x: x[1])
print len(result)
但是这不适用于每个列表,因为它只给出列表中项目的最大出现次数,但有时它不是最大项目。
答案 0 :(得分:3)
使用std::getline
和max
:
list.count
答案 1 :(得分:2)
您选择了最大计数,而不是最大项。你可以通过将key
参数放到max()
来解决这个问题,然后只打印结果(而不是它的长度,即 总是为2! ):
result = max(d.iteritems())
print result # prints the (maxvalue, count) pair.
或者,打印result[1]
只打印最大值的计数。
使用collections.Counter()
object计算您的商品数量,然后在其中找到最大键值对:
from collections import Counter
counts = Counter(L)
max_key, max_key_count = max(counts.iteritems())
print max_key_count
与您自己一样,这是一种O(KN)方法,其中K是L
的长度,N
是唯一项目的数量。这比max_element = max(L); count = L.count(max_element)
方法稍微有效一点,因为它避免了遍历所有L
两次。哪一个在实践中更快取决于N
对K
的影响程度。
答案 2 :(得分:1)
检查此代码: -
L= [3, 2, 1, 3, 5, 4, 5, 3, 5, 3]
newDict = {}
for i in L:
newDict.setdefault(i,0)
newDict[i]+=1
filter( lambda x : (newDict[x] == max(newDict.values())) ,newDict)[0]