查找浮点列表中最常出现的事件

时间:2013-11-22 01:00:45

标签: python python-3.x

from collections import Counter
from collections import defaultdict

L = [1.0,1.0,2.0,2.0,3.0,4.0,5.1,5.1]
d = defaultdict(float)
for i in L:
    d[i] += 1
most_frequent = sorted(Counter(L).most_common(), key=lambda x: x[1], reverse=True)[0]
print(most_frequent)

输出:(1.0,1)

在此方案中,代码输出“您的模式为1.0,2.0,5.1”。但是我运行程序只获得第一个模式,而不是所有模式都包含

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

你可以简单地使用Counter的{​​{1}}函数的第二个参数,就像这样

most_common

<强>输出

print([num for num, count in Counter(L).most_common(3)])

答案 1 :(得分:0)

也许是这样的?它可能更快,但它非常易读:

#!/usr/local/cpython-3.3/bin/python

import collections

list_ = [1.0,1.0,2.0,2.0,3.0,4.0,5.1,5.1]

frequencies = collections.Counter(list_)

reverse_dict = collections.defaultdict(list)
for key, value in frequencies.items():
    reverse_dict[value].append(key)

maximum_count = max(reverse_dict)

print('Your modes are {}'.format((reverse_dict[maximum_count]), ))
相关问题