将频率table中出现次数最多的n个数输出为列表

Output the n most frequent numbers in a frequency table as a list

我设置了频率 table 来计算给定列表中的项目。 输入示例:list[1, 2, 1, 1, 0, 8, 8]

frequencyTable() return是一个命令。列表中的项目及其出现次数。 printTable() 打印出 return。以我的例子来说,这将是……。喜欢:

1 : 3
8 : 2
2 : 1
0 : 1

最后(也是我卡住的地方)函数 mostFrequentValues() 应该输出列表中 returned 频率 table 的 n 个最频繁的数字。我的示例中 n = 2 的 return 应该是 [1, 8]。 我的版本 returns 元组,但我只需要一个值列表,没有其他任何东西。由于我是 Python 的新手,所以我还没有找到任何方法来过滤掉其余部分。

def frequencyTable(list):
    freq_table = {}
    for items in list:
        freq_table[items] = list.count(items) 
    return freq_table
def printTable(freq_table):
    for key, value in freq_table.items():
        print(key, ' : ', value)
def mostFrequentValues(freq_table, n):
    most_frequent = Counter(freq_table).most_common(n)
    return most_frequent

您可以对 return 元组的第一个元素进行列表理解:

from collections import Counter
def mostFrequentValues(freq_table, n):
    most_frequent = Counter(freq_table).most_common(n)
    return [i[0] for i in most_frequent]

输出(n = 2):

[1, 8]