提问者:小点点

Python:输出最频繁的数字及其数量


所以,问题是,我有一个由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写作:


共3个答案

匿名用户

使用基本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

还有,如果出现重复的数字,您会怎么做,需要考虑一下。