具有不同数据类型的哈希值一起?

时间:2013-05-10 16:41:16

标签: python hash

问题:

从一组不同数据类型的值中获取哈希值的好方法是什么?(在Python中)?

需要以一致的顺序对值进行哈希处理。需要散列的值是字符串和整数。

实施例

value1 = 'coconut'
value2 = 1.23

hash = Sha1Hash(value1, value2)

总是可以连接成一个字符串,但感觉这不太理想:

hash = Sha1Hash( '%s%s' % (value1, value2))

2 个答案:

答案 0 :(得分:2)

只需创建值的元组,然后哈希:

>>> Sha1Hash((value1, value2))

或使用标准hash函数:

>>> hash((value1, value2))

答案 1 :(得分:1)

看起来你想要一个sha1哈希值。 Python带有sha1哈希函数,但它需要一个字符串作为输入。因此,您的数据(value1, value2)需要序列化。

由于您的数据仅包含字符串,整数和浮点数,因此您可以序列化它并使用

保留值的顺序
str([value1, value2])

import hashlib

value1 = 'coconut'
value2 = 1.23

m = hashlib.sha1()
m.update(str([value1, value2]))
print(m.hexdigest())            
# 1381ae81c8a5b660cca5b8d4607aa378320e25e8