python-如何从元组中获得持久散列?

python-如何从元组中获得持久散列?,python,list,hash,tuples,Python,List,Hash,Tuples,我需要从元组生成一个哈希。理想情况下,我希望能够从列表中完成,但这是不可能的。我需要一些东西,我可以使用散列生成回元组,以最终访问具有正确顺序的项目(项目将是字符串)的原始列表 这是我想说的 l = ['x', 'y', 'z'] t = tuple(l) 我尝试使用了hash(),但最终在Python会话中没有提供相同的哈希值,这是我需要的 我需要散列,因为我想基于该列表创建一个以散列作为文件名的文件。然后,我想查找文件名,并能够使用哈希访问列表项(以正确的顺序) 我的理解是这是可能的,但我

我需要从元组生成一个哈希。理想情况下,我希望能够从列表中完成,但这是不可能的。我需要一些东西,我可以使用散列生成回元组,以最终访问具有正确顺序的项目(项目将是字符串)的原始列表

这是我想说的

l = ['x', 'y', 'z']
t = tuple(l)
我尝试使用了
hash()
,但最终在Python会话中没有提供相同的哈希值,这是我需要的

我需要散列,因为我想基于该列表创建一个以散列作为文件名的文件。然后,我想查找文件名,并能够使用哈希访问列表项(以正确的顺序)


我的理解是这是可能的,但我可能错了。有什么想法吗?

没有,如果元组包含字符串并带有内置的
hash()
,这是不可能的

字符串的散列故意在Python会话中变为变量,因为在Python 3.4中,它会导致潜在的安全问题()。在Python3.5中,这是通过在每个Python会话中对字符串进行不同的哈希来解决的


我建议您创建一个自己的哈希函数,使其稳定,或者使用一些。您可以使用MD5,它速度很快,并且对于相同的输入总是会给出相同的结果

导入hashlib
t=('x','y','z')
m=hashlib.md5()
对于t中的s:
m、 更新(s.encode())
fn=m.hexdigest()#=>“d16fb36f0911f878998c136191af705e”

正如user2357112所说,您不能从
fn
重建
l
;但是如果
l
保存在带有MD5散列的文件中,您将能够读取它。

散列理论上是不可逆的。加密似乎是你想要的。例如,base64

================== 更新

base64是一种编码技术


也许加密或编码是你想要的。

“我需要一些可以使用哈希生成元组的东西”——那么你需要的不是哈希。散列不是为了让你恢复原始输入而设计的。公平地说,那我应该研究什么呢?@user2357112:也许是措辞。“需要散列…”一段更好地描述了用例:将散列作为文件名从保存值的文件中检索存储值。最后一部分就是它,在文件中保存
l
似乎是一种方法。谢谢如果我早一点发现的话,这会节省我几个小时。。。