为什么不可哈希的列表可以作为字典的键?
不可哈希列表作为元组的键
众所周知,Python 中的字典 (dict) 对象不接受不可哈希的对象作为其键。已知哈希类型包括字符串、整数、浮点数、布尔值、元组和 None;不可哈希类型有字典、数组和集合。
但在某些情况下,用 ([1, 2],) 包裹不可哈希对象 list 后,仍然可以将其用作字典键。这是因为 ([1, 2],) 本身作为整体是可哈希的元组,即使其包含不可哈希元素。
元组哈希函数
元组的哈希函数会计算其内部所有元素的哈希值。因此,([1, 2],) 的哈希值实际上是由 1 和 2 的哈希值共同决定的。
自定义对象的可哈希性
此外,自定义类也可以通过实现 __hash__() 方法来使其实例可哈希。通过定义该方法,可以控制对象的哈希值生成方式。在此例中,custom_obj 的哈希值是由其 value 属性决定的。
文章推荐
-
使用内置函数的Python程序来反转数组的元素
数组是一种数据结构,用于按顺序存储同质元素。存储的元素由索引值或键来标识。 Python 没有特定的数据结构来表示数组。...
Python
27秒前 0 -
Python程序检测链表中的循环
当链表中的任何节点不指向 null 时,就称链表存在循环。最后一个节点将指向链表中的前一个节点,从而创建一个循环。有环的...
Python
1分钟前 0 -
在Python中,两个字典键的乘积
简介Python 中两个字典的乘积涉及遍历字典。我们可以找出满足特定条件的特定键。然后就可以很容易地计算出乘积。 Pyt...
Python
2分钟前 0 -
如何使用OpenCV Python创建一张黑色图像和一张白色图像?
要创建黑色图像,我们可以使用np.zeros()方法。它创建一个给定大小的 numpy n 维数组,所有元素均为 0。由...
Python
3分钟前 0 -
Python和Anaconda之间有什么区别?
在本文中,我们将了解 Python 和 Anaconda 之间的差异。Python是什么?Python 是一种开源语言,...
Python
3分钟前 0
最新文章
- 使用内置函数的Python程序来反转数组的元素 27秒前
- Python程序检测链表中的循环 1分钟前
- 在Python中,两个字典键的乘积 2分钟前
- 如何使用OpenCV Python创建一张黑色图像和一张白色图像? 3分钟前
- Python和Anaconda之间有什么区别? 3分钟前
- Python - 检查字符串中的所有字符是否都是字母数字? 4分钟前
- 高级Python元编程:动态代码生成和反射 5分钟前
- 如何在Python中实现梯度下降算法以寻找局部最小值? 6分钟前
- Python程序删除数组中的重复元素 7分钟前
- 使用Networxx模块的超链接诱导主题搜索(HITS)算法- Python 7分钟前