python - Python 中的过滤对象数组

标签 python python-3.x oop

我正在使用 Python 来挖掘一个相当大的项目并挖掘有关它的信息。我可以创建一个 ProjectFile 数组,但是我很难弄清楚如何过滤它。

class ProjectFile:
    def __init__(self, filename: str,
                 number_of_lines: int,
                 language: str,
                 repo: str,
                 size: int):
        self.filename = filename
        self.number_of_lines = number_of_lines
        self.language = language
        self.repo = repo
        self.size = size

如何过滤特定 repoProjectFile 对象数组?

例如,假设我想过滤 repo 属性为 SomeCocoapod 的对象。

我寻找了 filter 的示例,但我找到的所有内容都使用简单的示例,例如 strint 列表。

最佳答案

您可以使用点符号选择类的属性。

假设 arr 是 ProjectFile 对象的数组。现在您可以使用以下方式过滤 SomeCocoapod。

filter(lambda p: p.repo == "SomeCocoapod", arr)

注意:这会返回一个过滤器对象,它是一个生成器。要返回过滤后的列表,您可以将其包装在列表构造函数中。

作为一种非常 Pythonic 的替代方案,您可以使用列表推导式:

filtered_arr = [p for p in arr if p.repo == "SomeCocoapod"]

关于python - Python 中的过滤对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61577168/

相关文章:

python - 任何用于序列化属性的 cattrs 解决方案都使用不同的名称?

python - 重命名对象内部repr,name//tkinter问题

oop - 如何使用 Glade 在 Vala 中子类化 GTK IconView

php - 从同一类中的静态方法访问另一个方法中的变量

python - 如何在 pygame 中显示带有可移动透明圆圈的黑色大矩形?

python - 使用 subprocess.run 运行 Snakemake

python - 读取 prometheusetheus 错误 : bad_response: readObjectStart: expect { or n, 但发现 #

python - 分段图的虚线可以由源数据定义吗?

python - 使用两个版本的 Python (Windows) 安装 IPython

Python类变量或一般的类变量