为了账号安全,请及时绑定邮箱和手机立即绑定

Python:使用字典输出文本文件的模式

Python:使用字典输出文本文件的模式

Helenr 2021-03-31 09:10:37
我有一个文本文件,其中包含未知数量的数字。我的程序读取这些值并计算出最小值,最大值,范围和中位数。我要做的最后一件事是找到集合的模式。我有一个循环遍历的排序列表,以便将所有数字放在字典中,其中键是数字,每个数字的值是数字出现的次数。我了解如何执行所有操作,但是现在我需要输出集合的模式。num_count = {}for num in num_list:    if num in num_count:        num_count[num] += 1    if num not in num_count:        num_count[num] = 1上面的代码将所有数字从列表中放入字典中,并为它们提供相应的值以及该数字在文件中出现的次数,因此现在我只需要以[mode_1, mode_2,mode_3等。],但我只能显示一个数字。我有一个文本文件,其中模式应输出为:Mode: [660, 476]但是,我的代码输出为:Mode: 660Mode: 476这是我到目前为止的内容:maximum = 0for num in num_count:    count = num_count[num]    if count > maximum:        maximum = count    if count == maximum:        print('Mode: ', num)使用字典似乎是解决此问题的最简单方法。任何帮助将不胜感激。基本的python循环将是最好的,而无需导入诸如counter之类的东西。
查看完整描述

2 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

创建一个compute_mode带有接受列表的参数的函数(在本例中为num_count)。该函数查找模式并将其存储在中temp_list,然后将其打印出来


将所有模式值附加到这样的列表中:


temp_list.append(num)

然后像这样打印列表:


print("Mode: " ,temp_list)

最终代码:


temp_list = []

def compute_mode(my_list):

    counts = {}

    maxcount = 0

    for number in my_list:

        if number not in counts:

            counts[number] = 0

        counts[number] += 1

        if counts[number] > maxcount:

            maxcount = counts[number]


    for number, count in counts.items():

        if count == maxcount:

            temp_list.append(number)


num_count = [1,2,3,4,1,2,3,4,4] #any list

compute_mode(num_count)

print('Mode:', temp_list)


查看完整回答
反对 回复 2021-04-27
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

使用清单


maximum = 0

modes = []


for num in num_count:

    count = num_count[num]

    if count > maximum:

        maximum = count

    if count == maximum:

        modes.append(num)


print('Mode: ', modes)


查看完整回答
反对 回复 2021-04-27
  • 2 回答
  • 0 关注
  • 367 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信