Python:如何创建嵌套容器的哈希值

7 投票
3 回答
900 浏览
提问于 2025-04-16 07:12

[Python 3.1]

我正在尝试为一个可能包含嵌套容器的容器创建一个哈希值,而这个嵌套的层级深度是未知的。在所有层级中,里面只包含一些基本的数据类型。有什么好的方法可以做到这一点呢?

我为什么需要这个:

我在磁盘上用一个pickle对象缓存一些计算的结果。如果函数用不同的参数被调用,我需要让这个缓存的文件失效(这种情况发生得很少,所以我不会在磁盘上保存超过一个文件)。这个哈希值将用来比较参数。

3 个回答

0

我会把它变成一个字符串形式的json格式,然后如果还需要的话,再对这个字符串进行哈希处理。

from simplejson import dumps

def hash_data(data):
    return hash(dumps(data))
2

如果所有的容器都是元组,并且里面的所有对象都是可以被哈希的,那么这个主要的容器也应该是可以被哈希的。

1

你可以把参数转换成像JSON这样的格式,然后用这个格式来生成哈希值。

撰写回答