重启解释器后,同一个(python)字典的哈希值相同?

时间:2015-06-11 14:34:26

标签: python python-3.x

正如在this post中详细阐述的那样,命令

str(hash(frozenset(kwargs.items())))
如果重新启动解释器,

会为同一个字典产生不同的结果。现在显而易见的问题是:由于我需要哈希进行缓存,因此当字典相同时我需要一个哈希值相同(否则缓存没有任何意义)。那么说,我怎样才能为每个(非嵌套的)字典获得一个单独的散列?

1 个答案:

答案 0 :(得分:0)

一个简单的

":".join(key for key in sorted(kwargs.items()))

应该足够了。当然这假设键是字符串并且它们是稳定的,如果不是,你需要在它们周围调用str(并确保它有意义)和/或提供适当的比较。