Ведение коллекции объектов, упорядоченных по атрибуту - PullRequest
0 голосов
/ 15 октября 2019

У меня есть класс Node, в котором есть некоторые значения, которые делают его уникальным (x и y), а также атрибут «стоимость».

Я хочу сохранить коллекцию узлов в структуре данных,такие как красное черное дерево. Идея состоит в том, что узел с наименьшей стоимостью должен быть первым в дереве, и когда я вставляю новый узел в дерево, я бы хотел, чтобы он был расположен в отсортированном порядке (как в log n time)

Идея состоит в том, что узлы идентифицируются по x и y, и поэтому я хэширую их с кортежем этих двух значений для поиска их в наборе и сравнения их (__eq__). Но для сортировки я просто хочу посмотреть на атрибут стоимости, но поскольку стоимость может быть не уникальной для двух узлов, я не могу использовать это в качестве ключа для словаря.

Это может означать, что мне может понадобитьсядве структуры, одна для поиска по x и y, а другая для их сортировки и быстрого выполнения обеих операций (время имеет значение).

Я читал об упорядоченном приговоре, но не думаю, что он может достичьчто я хочу с этим.

Заранее спасибо.

1 Ответ

0 голосов
/ 15 октября 2019

Как и предполагал Джим , я действительно хотел использовать приоритетную очередь, но не смог найти то, что хочу. Оказывается, в python есть пакет heapq, который манипулирует списками для создания кучи. Это наряду с определением __lt__ в классе Node сделало именно то, что я хотел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...