Filter Array Of Objects In Python
Solution 1:
You can select attributes of a class using the dot notation.
Suppose arr
is an array of ProjectFile objects. Now you filter for SomeCocoapod using.
filter(lambda p: p.repo == "SomeCocoapod", arr)
NB: This returns a filter object, which is a generator. To have a filtered list back you can wrap it in a list constructor.
As a very Pythonic alternative you can use list comprehensions:
filtered_arr = [p for p in arr if p.repo == "SomeCocoapod"]
Solution 2:
Lets say you had this simple list of two ProjectFile
objects:
projects = [
ProjectFile(
filename="test1.txt",
number_of_lines=1,
language="English",
repo="repo1",
size=1,
),
ProjectFile(
filename="test2.txt",
number_of_lines=2,
language="German",
repo="repo2",
size=2
),
]
You could then filter out repo1
using the repo
attribute inside a list comprehension:
filtered = [project for project in projects if project.repo == "repo1"]
The above assumes you have overriden __str__
or __repr__
inside your ProjectFile
class to give you a string representation of the filtered objects. Otherwise you will get something like [<__main__.ProjectFile object at 0x000001E879278160>]
returned(which is fine if that's what you want to see). You can have a look at How to print instances of a class using print()? for more information.
Post a Comment for "Filter Array Of Objects In Python"