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”。但是我运行程序只获得第一个模式,而不是所有模式都包含
我该如何解决这个问题?
答案 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]), ))