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上看到了几个解释,需要更多的解释。感谢。
答案 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)