2012-04-06 125 views
0

C中的夥計將節點推入優先級隊列中,我們不得不重載<運算符。有沒有類似於python優先隊列中的東西?在Python中重載優先級隊列的比較器

用C

e.g:

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

你甚至試圖谷歌這個? – Marcin 2012-04-06 15:15:55

+0

這不是C,我想我問了一個有效的問題;沒有必要投降我。 – 2012-04-07 01:42:00

回答

7

將數據封裝在類中並覆蓋__cmp__以返回您想要的比較結果。例如。

class PQEntry: 

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

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

我想你的意思是按照優先次序進行比較?否則,這個例子不會有很大意義。 – 2012-04-06 15:49:57

+0

@NiklasB。你是對的,似乎有人已經做了編輯,雖然 – 2012-04-06 16:09:27

+0

是的,那就是我;)只是想讓你知道它,以防我誤解了你的帖子。 – 2012-04-06 16:11:17