列表不可哈希,但元组可哈希?

在如何哈希列表?有人告诉我,我应该转换为一个元组第一,如[1,2,3,4,5](1,2,3,4,5)

因此,第一个不能散列,而第二个可以散列。为什么*?


*我并不是真正地在寻求详细的技术说明,而是在寻找一种直觉

回答:

主要是因为元组是不可变的。承担以下工作:

>>> l = [1, 2, 3]

>>> t = (1, 2, 3)

>>> x = {l: 'a list', t: 'a tuple'}

现在,当您这样做时会发生什么l.append(4)?您已修改字典中的键!远道而来!如果您熟悉哈希算法的工作原理,这会让您感到恐惧。另一方面,元组是绝对不变的。t

+= (1,)看起来好像是在修改元组,但实际上并非如此:它只是创建一个 新的 元组,而字典键保持不变。

以上是 列表不可哈希,但元组可哈希? 的全部内容, 来源链接: utcz.com/qa/413720.html

回到顶部