私は2つの異なるプロジェクトで2つの異なる関数のハッシュを生成しました。 1つのプロジェクトはPython 2.7環境を使用し、他のプロジェクトはPython 3.4を使用しました。私はそれらの2つのハッシュと一致する必要があります。python 2.7と3.4の同じハッシュ値を生成する方法
x=("asd","def")
hash(x)
一致しません。何か案が?前もって感謝します。
私は2つの異なるプロジェクトで2つの異なる関数のハッシュを生成しました。 1つのプロジェクトはPython 2.7環境を使用し、他のプロジェクトはPython 3.4を使用しました。私はそれらの2つのハッシュと一致する必要があります。python 2.7と3.4の同じハッシュ値を生成する方法
x=("asd","def")
hash(x)
一致しません。何か案が?前もって感謝します。
まあ、運がいいです。 __hash__
の内部詳細は実装の詳細とみなされます。さらに、3.3以降のPythonsでは、文字列のハッシュ関数はデフォルトでランダム化されています。計算は、32ビットバージョンと64ビットバージョンが異なります(値はPy_ssize_t
に切り捨てられます)。
たとえば、Python 3.5が64ビットで、Python 2.7が32ビットの場合は、
>>> hash((1, 2, 3)) & 0xFFFFFFFF
のように、Python 3の値を0xFFFFFFFFで試して2.7の値を取得することができます。
ありがとう。しかし、それは文字列の値には機能しません。 –
@SunnoSakibは、Python 2と3の両方からハッシュ値を与えてください。 –
python 3.4:hash( "" asd "、" def ")) - > -1259920402 ..... hash((" asd "、" def "))&0xFFFFFFFF python 2.7:hash(" "asd"、 "def")) 923829442 ...ハッシュ( "" asd "、" def "))&0xFFFFFFFF 923829442L –
あなたはpythonの組み込みハッシュ関数に制限されていますか? –
はまだビルトイン機能で道を探しています。もし見つからなければ私はカスタム@JoelsElfのために行く –