質問:
(Pythonで)異なるデータ型の値のグループからハッシュを取得する良い方法は何ですか?
値は一貫した順序でハッシュする必要があります。ハッシュする必要がある値は、文字列と整数です。
例:
value1 = 'coconut'
value2 = 1.23
hash = Sha1Hash(value1, value2)
いつでも文字列に連結できますが、これは理想的ではないように感じます。
hash = Sha1Hash( '%s%s' % (value1, value2))
値のタプルを作成し、それをハッシュするだけです:
>>> Sha1Hash((value1, value2))
または標準のハッシュ関数を使用します。
>>> hash((value1, value2))
sha1 ハッシュ値が必要なようです。Python には sha1 ハッシュ関数が付属していますが、入力として文字列が必要です。したがって、データは(value1, value2)シリアル化する必要があります。
データは文字列、int、float のみで構成されているため、シリアル化して値の順序を保持できます。
str([value1, value2])
import hashlib
value1 = 'coconut'
value2 = 1.23
m = hashlib.sha1()
m.update(str([value1, value2]))
print(m.hexdigest())
# 1381ae81c8a5b660cca5b8d4607aa378320e25e8