1. ホーム
  2. python

[解決済み] heapqに特定の属性からヒープを評価させるには?

2023-08-07 02:16:56

質問

数値だけでなく、オブジェクトのヒープを保持したい。 それらは、ヒープがソートすることができるそれらの中の整数属性を持っています。 Pythonでヒープを使用する最も簡単な方法はheapqですが、heapqを使用するときに特定の属性でソートするように指示するにはどうすればよいですか?

どのように解決するのですか?

heapq は、同じようにオブジェクトをソートします list.sort と同じように、オブジェクトをソートするメソッドを定義してください。 __cmp__() を定義して、同じクラスの別のインスタンスと自分自身を比較するようにします。

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

Python 2.xで動作します。

3.xで使用します。

def __lt__(self, other):
    return self.intAttribute < other.intAttribute