Как отфильтровать коллекцию объектов по значению поля?

Как в Python организовать и отфильтровать коллекцию объектов по значению поля? Мне нужно отфильтровать, чтобы быть равным точному значению и быть меньше значения.

И как это сделать эффективно? Если я храню свои объекты в списке, мне нужно перебрать весь список, потенциально содержащий сотни тысяч объектов.

      @dataclass
class Person:
  name: str
  salary: float
  is_boss: bool


# if to store objects in a list...
collection = [Person("Jack", 50000, 0), ..., Person("Jane", 120000, 1)]

# filtering in O(n), sloooooow
target = 100000
filtered_collection = [x for x in collection if salary < target]

PS: На самом деле мой вариант использования - это группировка по определенному полю, т.е.is_bossи отфильтровать по другому, т.е.salary. Как это сделать? Должен ли я пользовательitertools.groupbyпо отсортированным спискам и сделать мои объекты сопоставимыми?

0 ответов

Другие вопросы по тегам