Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 保持对象集合按属性排序_Python_Sorting_Data Structures - Fatal编程技术网

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

Python 保持对象集合按属性排序,python,sorting,data-structures,Python,Sorting,Data Structures,我有一个类节点,其中有一些使其唯一的值(x和y),还有一个属性“cost” 我希望在数据结构中保留一个节点集合,例如红黑树。其思想是成本最低的节点应该是树中的第一个节点,当我将一个新节点插入树中时,我希望它按排序顺序排列(如logn time) 其思想是节点由x和y标识,因此我用这两个值的元组对它们进行散列,以便在集合中搜索它们并比较它们(_eq__)。但是对于排序,我只想看一下cost属性,但是由于cost对于两个节点可能不是唯一的,所以我不能将其用作字典的键 这可能意味着我可能需要两个结构,

我有一个类节点,其中有一些使其唯一的值(x和y),还有一个属性“cost”

我希望在数据结构中保留一个节点集合,例如红黑树。其思想是成本最低的节点应该是树中的第一个节点,当我将一个新节点插入树中时,我希望它按排序顺序排列(如logn time)

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

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

我读过OrderedICT,但我认为它不能实现我想要的


提前谢谢。

正如建议的那样,我确实想使用优先级队列,但我找不到我想要的。事实证明python确实有一个heapq包,它可以操纵列表来生成堆。这与在Node类上定义uu lt_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u。