在Python中重载优先级队列的比较器

时间:2012-04-06 15:12:22

标签: python queue

C中的人将节点推入优先级队列,我们​​不得不重载<运营商。是否有类似于python优先级队列中的内容。

例如在C:

    struct node
    {

    int city , weight

    }

    bool operator < (node a, node b)
    {
     return a.weight > b.weight;
    }

    int main()
   {
     node a,b,c;
     priority_queue <node> pq;
     pq.push(a);pq.push(b);pq.push(c);
     return 0;
   }

有没有类似的方法在Python中定义优先级队列;如果需要帮助,我无法在python.org文档的头部或尾部进行优先级排队。我在stackoverflow上看到了几个解释,需要更多的解释。感谢。

1 个答案:

答案 0 :(得分:8)

将数据换行并覆盖__cmp__以返回您想要比较的内容。 E.g。

class PQEntry:

    def __init__(self, priority, value):
        self.priority = priority
        self.value = value

    def __cmp__(self, other):
         return cmp(self.priority, other.priority)