从用户在列表中的输入计数列表中每个元素的频率

问题描述 投票:-2回答:2

我们必须从用户那里输入列表的长度。然后计算列表中每个元素的频率并使用python打印它们。

我尝试过,这里是代码:

l =  []
n = int(input("Enter the length of list : "))
for i in range(0,n):
    l.append(int(input("Enter an element : ")))
count = 0
for i in range(len(l)):
    for j in range(len(l)):
        if (l[i] == l[j]):  #Error
            count = count + 1
            l.pop(j)
    else:
        print("Count of ",l[i]," is ",count)
        count = 0
        l.pop(i)
else:
    print(l)

出现错误:

第8行,在如果(l [i] == l [j]):IndexError:列表索引超出范围

python list
2个回答
0
投票

l.pop是导致错误的原因,您正在从列表中删除项目,但仍将其恢复为原始大小。使用dict计数频率

frequencies = {}
for item in l:
    if item in frequencies:
        frequencies[item] += 1
    else:
        frequencies[item] = 1

for key, value in frequencies.items():
    print(f'Count of {key} is {value}')

或带有get()

for item in l:
    freq[item] = frequencies.get(item, 0) + 1

-1
投票

您所需要做的只是对pop语句进行注释

l =  []
n = int(input("Enter the length of list : "))
for i in range(0,n):
    l.append(int(input("Enter an element : ")))
count = 0
counts={}
for i in range(len(l)):
    for j in range(len(l)):

        if (l[i] == l[j]):  #Error
            count = count + 1            
            #l.pop(j)
    else:
        counts[l[i]]=count
        #print("Count of ",l[i]," is ",count)
        count = 0
        #l.pop(i)
else:
    print(l)

counts

for item,count in counts.items():
    print("Count of ",item," is ",count)
© www.soinside.com 2019 - 2024. All rights reserved.