python – 列表不可用,但元组hashable?

How to hash lists?我被告知我应该先转换为元组,例如[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,)可能看起来像是在修改元组,但实际上并非如此:它只是创建一个新的元组,保持字典键不变.

上一篇:python-将字符串元组转换为元组


下一篇:Python按元组中的值的长度对List进行排序