Python标准库中的所有映射类型都是使用dict来实现的,因此他们都有一个共同的限制,即只有可散列的数据类型才可以作为映射的键,那么什么是可散列的数据类型呢?下面介绍下:
在python词汇表中,关于可散列类型的定义有这么一段话:
如果一个对象是可散列的,那么在这个对象的生命周期中,他的可散列值是不变的,而且这个对象需要实现__hash__()方法。另外可散列对象还要有
__eq__()
方法,这样才可以和别的键做比较,如果两个可散列对象的值是相等的,那么他们的散列值一定是相等的。
原子不可变数据类型(str
,bytes
和数值类型)都是可散列类型,frozenset
也是可散列的,因为根...