在打印了一定数量的项目后需要停止打印Counter()

时间:2018-05-22 15:57:35

标签: python python-3.x

尝试编写程序,根据用户想要查看的内容,在列表中打印 n 最常见的项目,如果最后的项目具有相同的频率,则打印更多。

这就是我写的:

ys$~.

问题在于,只要运行该print语句,它就会打印 count()的所有行。

例如,如果用户只想打印最常见的值:

s/A.*/\~\~&\~\~/

最常见的值是 word1 word2 之间的关系 - 因为它们都出现两次。所以输出将是

num = int(input("Enter Number"))
i = 0
wordsInList = [word1, word2, word2, word3, word1]
catagory = Counter(list)
catagory.keys()
for key, value in catagory.items(): #set the frequency to value and word to key
    if i <= num or lastValue == value: #(Issue with code)If the required number of values have been printed, stop printing
        print('{:<5d}{:<15s}'.format(value, key)) 
        lastValue = value
        i =+ 1

如果用户输入 n = 2 ,输出将是相同的,因为它们是2个最常用的单词。但是,如果用户输入 n = 3 ,则下面是输出:

n = 1

1 个答案:

答案 0 :(得分:0)

您可以尝试这种方法:

n = 3
sorted_dict_list = sorted(category.items(), key = lambda x:x[1], reverse = True) 
last_value = sorted_dict_list[0][1]
for key, value in sorted_dict_list:
    if (value == last_value - n):
        break
    print("{},{}".format(value, key))