首页 > 解决方案 > 打印一个包含最多 n 个重复元素的列表

问题描述

总而言之,我需要创建一个函数,该函数接收一个列表作为输入和一个数字 N 并返回一个新列表,其中包含最多 n 次的每个重复元素

这是一个例子:

def reduceList(L,n):
    newList = []
    n = int(input('how many times?'))
    for i in L:
        if i not in L:
            newList.append(i)
    newList.sort()
    return L

lisca = [1, 2, 3, 2, 5, 6, 7, 2, 1, 7, 1, 7]
lisca = reduceList(lisca)
print(lisca)

标签: pythonlistfunction

解决方案


使用 Counter 创建一个字典,其中键是列表中的项目,值是出现次数,主要包装器:

lisca=  [1, 2, 3, 2, 5, 6, 7, 2, 1, 7, 1, 7]
occurence_dict = Counter(lisca)
Counter({1: 3, 2: 3, 7: 3, 3: 1, 5: 1, 6: 1})
lisca = parse_list(lisca,2)
occurence_dict = Counter(lisca)
Counter({1: 2, 2: 2, 7: 2, 3: 1, 5: 1, 6: 1})

功能代码:

from collections import Counter
def parse_list(L,n):
    result_list = []
    occurence_dict = Counter(L)
    for key, counter in occurence_dict.items():
        if counter <= n:
            result_list.extend([key for i in range(counter)])
        else:
            result_list.extend([key for i in range(n)])
    return result_list

推荐阅读