首页 > 解决方案 > 我正在尝试将每个数字的频率计算为列表中的单个数字

问题描述

我试图将每个数字的频率计算为列表中的单个数字。例如 1:5 次,2:4 次,但我没有得到个人计数。这是我的代码

def CountFrequency(my_list): 
    freq = {} 
    for item in my_list: 
        if (item in freq): 
            freq[item] += 1
        else: 
            freq[item] = 1
    for key, value in freq.items(): 
        print ("% d : % d"%(key, value)) 

my_list =[1, 21, 25, 53, 3, 14, 1, 12, 52, 33] 
print(CountFrequency(my_list))

标签: python-3.x

解决方案


直觉

将列表中的项目转换为字符串,然后检查该字符串是否在字典中。如果已经存在,则增加计数。

def CountFrequency(my_list): 
    freq = {} 
    for item in my_list:
        for i in str(item):
            if (i in freq): 
                freq[i] += 1
            else: 
                freq[i] = 1
    for key, value in freq.items(): 
        print ("% d : % d"%(int(key), int(value))) 

my_list =[1, 21, 25, 53, 3, 14, 1, 12, 52, 33] 
CountFrequency(my_list)

#output
 1 :  5
 2 :  4
 5 :  3
 3 :  4
 4 :  1

列出

def CountFrequency(my_list): 
    freq = {} 
    list_1 = []
    for item in my_list:
        for i in str(item):
            if (i in freq): 
                freq[i] += 1
            else: 
                freq[i] = 1
    for key, value in freq.items(): 
        list_1.append((int(key), int(value)))
                      
    return list_1
                      
my_list =[1, 21, 25, 53, 3, 14, 1, 12, 52, 33] 
CountFrequency(my_list)

# output
[(1, 5), (2, 4), (5, 3), (3, 4), (4, 1)]

我所做的只是重复以避免破坏您的结构。 freq.items()直接将字典转换为列表的工作


推荐阅读