2

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 に関するいくつかの説明を見ましたが、もう少し説明が必要です。ありがとう。

4

1 に答える 1

8

データをクラスでラップし、オーバーライド__cmp__して、比較したいものを返します。例えば

class PQEntry:

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

    def __cmp__(self, other):
         return cmp(self.priority, other.priority)
于 2012-04-06T15:23:46.287 に答える