繁体   English   中英

保持按属性排序的对象集合

[英]Keeping collection of objects ordered by an attribute

我有一个 class 节点,它具有一些使其唯一的值(x 和 y)以及属性“成本”。

我想在数据结构中保留一组节点,例如红黑树。 这个想法是成本最低的节点应该是树中的第一个节点,当我将一个新节点插入树中时,我希望它按排序顺序放置(如 log n 时间)

这个想法是节点由 x 和 y 标识,所以我用这两个值的元组对它们进行散列,以便在集合中搜索它们并比较它们 (__eq__)。 但是对于排序我只想查看成本属性,但是由于两个节点的成本可能不是唯一的,所以我不能将其用作字典的键。

这可能意味着我可能需要两种结构,一种用于按 x 和 y 进行搜索,另一种用于保持它们的排序并使两种操作都快速(时间很重要)。

我读过orderdict,但我认为它不能达到我想要的效果。

提前致谢。

正如吉姆建议的那样,我确实想使用优先级队列,但我找不到我想要的。 原来 python 确实有一个 heapq package ,它操纵列表来制作堆。 这与在节点 class 上定义 __lt__ 一起完成了我想要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM