python - 在第一个元素出现 n 次后删除子列表
问题描述
我有一个很长的嵌套列表。每个子列表包含 2 个元素。一旦找到第一个元素超过 3 次,我想做的是遍历整个列表并删除子列表。
例子:
ls = [[1,1], [1,2], [1,3], [1,4], [2,2], [2,3], [3,4], [3,5], [3,6], [3,7]]
desired_result = [[1,1], [1,2], [1,3], [2,2], [2,3], [3,4], [3,5], [3,6]]
解决方案
如果输入按第一个元素排序,则可以使用groupby和islice:
from itertools import groupby, islice
from operator import itemgetter
ls = [[1, 1], [1, 2], [1, 3], [1, 4], [2, 2], [2, 3], [3, 4], [3, 5], [3, 6], [3, 7]]
result = [e for _, group in groupby(ls, key=itemgetter(0)) for e in islice(group, 3)]
print(result)
输出
[[1, 1], [1, 2], [1, 3], [2, 2], [2, 3], [3, 4], [3, 5], [3, 6]]
想法是使用 将元素按第一个值分组groupby
,然后使用 获取前 3 个值(如果存在)islice
。
推荐阅读
- python - 使用 bs4 和 Python 进行网页抓取
- amazon-web-services - Cloudformation 模板:Cloudfront DomainName WebsiteURL 返回错误
- python - 创建 python 环境模块需要遵循哪些步骤?我正在尝试在 Windows 10 上执行此操作
- jquery - 将多个 textarea 输入合并到一个 textarea 并使其可使用 jQuery 进行编辑
- jenkins - 没有方法签名:collectLogs.call() 适用于参数类型
- json - 如何在 Delphi 10.1 berlin 中将嵌套对象转换为 Json
- list - 从两个不同大小的列表创建对列表
- python - 如何在 Python 中格式化对 Spotify Web API 的 GET 请求?
- apache - htaccess RewriteRule 具有 3 个规则和 2 个不同的 PHP 文件(错误)
- python - 为什么我不能得到一个元组的年月日