Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 我试图将每个数字的频率计算为列表中的单个数字_Python 3.x - Fatal编程技术网

Python 3.x 我试图将每个数字的频率计算为列表中的单个数字

Python 3.x 我试图将每个数字的频率计算为列表中的单个数字,python-3.x,Python 3.x,我试图将每个数字的频率计算为列表中的单个数字。例如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.i

我试图将每个数字的频率计算为列表中的单个数字。例如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))
直觉

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

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
列表

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

一种方法是将数字转换为字符串,并以这种方式迭代数字,将它们转换回整数

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

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

这里是一个不转换为字符串的解决方案

counter = {}

def count_digits(num):
    remainder = num % 10
    if remainder not in counter:
        counter[remainder] = 1
    else:
        counter[remainder] += 1
    num = num // 10
    if num == 0:
        return
    else:
        count_digits(num)

my_list = [1, 21, 25, 53, 3, 14, 1, 12, 52, 33]
for num in my_list: count_digits(num)

print(counter)
{1: 5, 2: 4, 5: 3, 3: 4, 4: 1}

你的问题是什么?@ombk,它没有给我单独的计数。它将数字计数为1:1倍、21:1倍,依此类推。我试图让它把每个整数中的个位数计算为一。是的,我解决了你的问题。你能确认这是否解决了你的问题吗?是的。非常感谢你。但如何将其作为列表返回?我指的是产量
counter = {}

def count_digits(num):
    remainder = num % 10
    if remainder not in counter:
        counter[remainder] = 1
    else:
        counter[remainder] += 1
    num = num // 10
    if num == 0:
        return
    else:
        count_digits(num)

my_list = [1, 21, 25, 53, 3, 14, 1, 12, 52, 33]
for num in my_list: count_digits(num)

print(counter)
{1: 5, 2: 4, 5: 3, 3: 4, 4: 1}