gpt4 book ai didi

python - 如何快速计算对象集合的哈希值?

转载 作者:太空宇宙 更新时间:2023-11-04 10:34:45 25 4
gpt4 key购买 nike

考虑一个函数f(*x),它接受很多参数*x。基于这些参数(对象),函数 f 组成了一个相当复杂的对象 o 并返回它。 o 实现了 __call__,所以 o 本身就是一个函数。由于 o 的组合非常耗时,而且在我的场景中,没有必要根据相同的参数 *x 拥有多个 o 实例>,它们将被缓存。

现在的问题是:如何根据多个参数 *x 高效地计算哈希值?目前我正在使用 python 字典,我连接每个 xstr() 表示来构建每个键。它在我的场景中有效,但感觉很尴尬。我需要以非常高的频率调用结果对象 o,所以我怀疑重复调用 str() 和字符串连接会浪费大量计算时间。

最佳答案

您可以使用 hash内置函数,将 x 中项目的哈希值组合在一起。执行此操作的典型方法(参见例如 the documentation)是对单个对象的所有哈希值进行 xor:

it is advised to somehow mix together (e.g. using exclusive or) the hash values for the components of the object that also play a part in comparison of objects

要以功能方式实现它,请使用 operatorreduce :

from functools import reduce # only required in Python 3.x
from operator import xor

def hashed(*x):
return reduce(xor, map(hash, x))

另见 this question .

关于python - 如何快速计算对象集合的哈希值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24118806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com