[解決済み】_hash__()の正しい実装方法と良い方法は?)
2022-04-11 23:04:15
質問
を実装する正しい方法、良い方法は何ですか?
__hash__()
?
ハッシュコードを返す関数についてです。この関数は、ハッシュテーブル、別名ディクショナリにオブジェクトを挿入するために使用されます。
として
__hash__()
は整数を返し、オブジェクトをハッシュテーブルに "binning"するために使われます。私は、返された整数の値は、共通のデータに対して均一に分布するべきだと仮定します(衝突を最小化するため)。
そのような値を得るための良い方法は何ですか?衝突は問題ですか?
私の場合、いくつかのint、いくつかのfloatと文字列を保持するコンテナクラスとして機能する小さなクラスを持っています。
どのように解決するのですか?
簡単で正しい実装方法
__hash__()
は、キータプルを使用することです。特化したハッシュほど高速ではありませんが、それが必要ならCで型を実装するべきでしょう。
ハッシュと等号にキーを使用する例です。
class A:
def __key(self):
return (self.attr_a, self.attr_b, self.attr_c)
def __hash__(self):
return hash(self.__key())
def __eq__(self, other):
if isinstance(other, A):
return self.__key() == other.__key()
return NotImplemented
また
のドキュメントは
__hash__
にはより多くの情報があり、特定の状況下では価値があるかもしれません。
関連
-
PythonはWordの読み書きの変更操作を実装している
-
[解決済み】TypeError: unhashable type: 'numpy.ndarray'.
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み] Pythonで型をチェックする標準的な方法は何ですか?
-
[解決済み] ファイルに行を書き込む正しい方法?
-
[解決済み] リストとタプルの違いは何ですか?
-
[解決済み] Pythonでホームディレクトリを取得するための正しいクロスプラットフォームな方法は何ですか?
-
[解決済み] PythonモジュールとPythonパッケージの違いは何ですか?
-
[解決済み] ConcurrentHashMapとCollections.synchronizedMap(Map)の違いは何ですか?
-
[解決済み] Pythonのリクエストモジュールを使ってtry/exceptする正しい方法?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonの非常に便利な2つのデコレーターを解説
-
Python百行で韓服サークルの画像クロールを実現する
-
パッケージングツールPyinstallerの使用と落とし穴の回避
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
Python 入出力と高次代入の基礎知識
-
[解決済み】TypeError: 系列を <class 'float'> に変換することができません。
-
[解決済み] TypeError: 'DataFrame' オブジェクトは呼び出し可能ではない
-
[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].
-
[解決済み】cアンダースコア式`c_`は、具体的に何をするのですか?
-
[解決済み] なぜhashCodeに素数を使うのですか?