Python 3.x 我试图将每个数字的频率计算为列表中的单个数字
我试图将每个数字的频率计算为列表中的单个数字。例如1:5次,2:4次,但我没有得到个人计数。这是我的密码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
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}