У меня есть большой словарь заказов с ключами, равным заказом идентификаторов:Python - быстрый фильтр большой список/ДИКТ объектов по значениям атрибутов
class Order():
def __init__(self, ord_id, price, status='open'):
self.ord_id = ord_id
self.price = price
self.status = status
orders = {'1': <order1>, '2': <order2>, ... , 'N': <orderN>}
Как найти заказы с ценой меньше или равны заданным стоимость? Фильтрация происходит тысячи раз в секунду. В этом случае ошибки Dict/list слишком медленны.
Для избежания полных циклов, вероятно, требуется настраиваемый индекс или некоторая библиотека или база данных b-дерева, но я хотел бы сохранить ее максимально простой.
Заказы, которые удовлетворяют условиям фильтра, обычно составляют 1% от общего количества.
Спасибо, но это не намного быстрее затем list (dict) comp, так как в этом случае требуется полный цикл по всем заказам. Что бы помогло - это какая-то структура пользовательских данных, в которой нет необходимости перебирать все заказы. Заказы, удовлетворяющие условиям фильтра, обычно составляют 1% от общего количества. – Sergey11g
Возможно, вы сможете сортировать свой словарь 'orders' по цене по возрастанию, таким образом вы можете остановить цикл фильтра, когда первая цена выше заданного значения. - С этим вам придется перебирать диктофон при внесении нового заказа, но вы сэкономите время на поиск дешевых заказов. – Hrabal
Хотя это хорошая идея, я не могу ее использовать, потому что заказы на самом деле сложнее и имеют больше атрибутов для фильтрации, чем в примере этого вопроса. – Sergey11g