python - 打印一个包含最多 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)
解决方案
使用 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
推荐阅读
- node.js - Socket-io 动态初始化
- javascript - 将带有项目的大括号字符串的 Google Admin SDK 的响应转换为多维数组
- javascript - moment.js 函数在节点中为日期格式“dddd Do MMM”返回 NaN
- sql - 当名称与表名相同时,内联索引定义失败
- c - 如何解决 MISRA C:2012 Rule:8.4?
- less - 来自不同来源的 LESS 变量
- mongoose - 链接猫鼬承诺
- android - “错误:
- 内部元素必须是资源引用或为空”修复后仍然存在
- ios - iPhone静音时如何播放声音?
- .net - 关于 String.Format 显示时间的问题