草庐IT

开散列

全部标签

python - 是什么让用户定义的类不可散列?

docs只要定义了__hash__方法和__eq__方法,就说一个类是可散列的。然而:classX(list):#read-onlyinterfaceof`tuple`and`list`shouldbethesame,soreusetuple.__hash____hash__=tuple.__hash__x1=X()s={x1}#TypeError:unhashabletype:'X'是什么让X不可散列?请注意,我必须有相同的列表(就常规相等而言)才能被散列到相同的值;否则,我将violatethisrequirement关于哈希函数:Theonlyrequiredpropertyis

python - 如何使用 bcrypt 将纯文本密码与散列密码进行比较?

我想使用bcrypt对密码进行哈希处理,然后验证提供的密码是否正确。哈希密码很容易:importbcryptpassword=u'foobar'password_hashed=bcrypt.hashpw(password,bcrypt.gensalt())#thenstorepassword_hashedinadatabase如何将纯文本密码与存储的哈希值进行比较? 最佳答案 使用py-bcrypt,您不需要单独存储盐:bcrypt将盐存储在哈希中。您可以简单地将哈希用作盐,盐存储在哈希的开头。>>>importbcrypt>>>s

python - 如何使用 bcrypt 将纯文本密码与散列密码进行比较?

我想使用bcrypt对密码进行哈希处理,然后验证提供的密码是否正确。哈希密码很容易:importbcryptpassword=u'foobar'password_hashed=bcrypt.hashpw(password,bcrypt.gensalt())#thenstorepassword_hashedinadatabase如何将纯文本密码与存储的哈希值进行比较? 最佳答案 使用py-bcrypt,您不需要单独存储盐:bcrypt将盐存储在哈希中。您可以简单地将哈希用作盐,盐存储在哈希的开头。>>>importbcrypt>>>s

python - python中的快速、大宽度、非加密字符串散列

我需要python中的高性能字符串散列函数,它可以生成具有至少34位输出的整数(64位是有意义的,但32位太少了)。StackOverflow上还有其他几个类似这样的问题,但在我能找到的每个接受/赞成的答案中,我都属于不适用的几个类别之一(由于给定的原因)。使用内置的hash()函数。这个函数,至少在我正在开发的机器上(使用python2.7和64位cpu)产生一个适合32位的整数-对于我的目的来说不够大。使用hashlib。hashlib提供加密哈希例程,它远慢于非加密目的所需的速度。我认为这是不言而喻的,但如果您需要基准和引用来说服您相信这一事实,那么我可以提供。使用string.

python - python中的快速、大宽度、非加密字符串散列

我需要python中的高性能字符串散列函数,它可以生成具有至少34位输出的整数(64位是有意义的,但32位太少了)。StackOverflow上还有其他几个类似这样的问题,但在我能找到的每个接受/赞成的答案中,我都属于不适用的几个类别之一(由于给定的原因)。使用内置的hash()函数。这个函数,至少在我正在开发的机器上(使用python2.7和64位cpu)产生一个适合32位的整数-对于我的目的来说不够大。使用hashlib。hashlib提供加密哈希例程,它远慢于非加密目的所需的速度。我认为这是不言而喻的,但如果您需要基准和引用来说服您相信这一事实,那么我可以提供。使用string.

python - Python中的散列数组

是否可以散列lists?例如,我知道元组的哈希是可能的:>>>hash((1,2,3,4,5,6))-319527650但是是否可以散列list?>>>hash([1,2,3,4,5,6])hash_value可能的解决方案:Veryindepthexplanationtothehashingoflists,here. 最佳答案 试试吧:>>>hash((1,2,3))2528502973977326415>>>hash([1,2,3])Traceback(mostrecentcalllast):File"",line1,inTyp

python - Python中的散列数组

是否可以散列lists?例如,我知道元组的哈希是可能的:>>>hash((1,2,3,4,5,6))-319527650但是是否可以散列list?>>>hash([1,2,3,4,5,6])hash_value可能的解决方案:Veryindepthexplanationtothehashingoflists,here. 最佳答案 试试吧:>>>hash((1,2,3))2528502973977326415>>>hash([1,2,3])Traceback(mostrecentcalllast):File"",line1,inTyp

python - numpy数组散列的最有效属性

我需要能够将numpyarray存储在dict中以进行缓存。哈希速度很重要。array表示索引,因此虽然对象的实际身份并不重要,但值才是。可变性不是问题,因为我只对当前值感兴趣。为了将其存储在dict中,我应该散列什么?我目前的做法是使用str(arr.data),在我的测试中比md5快。我从答案中结合了一些例子来了解相对时间:In[121]:%timeithash(str(y))10000loops,bestof3:68.7usperloopIn[122]:%timeithash(y.tostring())1000000loops,bestof3:383nsperloopIn[123

python - numpy数组散列的最有效属性

我需要能够将numpyarray存储在dict中以进行缓存。哈希速度很重要。array表示索引,因此虽然对象的实际身份并不重要,但值才是。可变性不是问题,因为我只对当前值感兴趣。为了将其存储在dict中,我应该散列什么?我目前的做法是使用str(arr.data),在我的测试中比md5快。我从答案中结合了一些例子来了解相对时间:In[121]:%timeithash(str(y))10000loops,bestof3:68.7usperloopIn[122]:%timeithash(y.tostring())1000000loops,bestof3:383nsperloopIn[123

python - Python 函数为什么以及如何是可散列的?

我最近在Python中尝试了以下命令:>>>{lambdax:1:'a'}{>:'a'}>>>defp(x):return1>>>{p:'a'}{:'a'}dict的成功创建表明lambda和常规函数都是可散列的。(类似{[]:'a'}失败并出现TypeError:unhashabletype:'list')。哈希显然不一定是函数的ID:>>>m=lambdax:1>>>id(m)140643045241584>>>hash(m)8790190327599>>>m.__hash__()8790190327599最后一条命令表明__hash__方法是为lambda显式定义的,也就是说,这