所以,问题是,我有一个由30个随机重复的数字组成的列表,我必须找到最频繁的数字以及重复的次数。
例如:列表是[10、10、11、11、1、10、5、7、19、7、3、11、7、15、16、20、9、7、4、2、3、11、20、14、5、15、2、14、20、6]
,从这个列表中,我希望显示的结果是11、4次7、4次。
我一直在努力,但我似乎迷路了,我不能清楚地找出一种方法,超越了制作列表和为列表中的i写作:
使用基本Python完成此任务的一种方法;没有itertools
或集合
将是:
d = {}
mylist = [1,1,2,2,2,3,3,3,3]
for i in set(mylist):
d[i] = mylist.count(i)
然后,对cript
进行排序,以确定最频繁的,等等。
这个答案是为了教育目的而发布的,显示了一种不使用图书馆完成这项任务的较低级别的方法。
你可以试试这样,
import collections
numbers = [1,2,2,3,3]
data = collections.Counter(numbers)
data_list = dict(data)
max_value = max(list(data.values()))
mode_val = [num for num, freq in data_list.items() if freq == max_value]
if len(mode_val) == len(numbers):
print("No mode in the list")
else:
print('mode: ',mode_val)
x= {y:numbers.count(y) for y in mode_val}
print('times: ',x)
我仍然是一个新手,我尝试了这个并且有效,我希望您会发现它易于阅读。但是,我会推荐一个更简洁的解决方案,因为有经验的用户已经给出了:)
from collections import Counter
data = [10, 10, 11, 11, 1, 10, 5, 7, 19, 7, 3, 11, 7, 15, 16, 20, 9, 7, 4, 2, 3, 11, 20, 14, 5, 15, 2, 14, 20, 6]
def most_frequent_number_finder(your_list):
occurence_count = Counter(your_list)
return occurence_count.most_common(1)[0][0]
most_frequent_number = (most_frequent_number_finder(data))
most_frequent_number_count = data.count(most_frequent_number)
print(f"Your most frequent number is {most_frequent_number} with a count of {most_frequent_number_count}")
##打印:您最常使用的数字是11,计数为4
还有,如果出现重复的数字,您会怎么做,需要考虑一下。